Игнорировать значения из потока строк (например,% * f в sscanf) - PullRequest
7 голосов
/ 24 ноября 2010

Я пытаюсь избавиться от старых небезопасных функций C, включая sscanf ().Прямо сейчас я использую

#include <sstream>
std::string str = "111 222.2 333 444.4 555";
std::stringstream sstr(str);
int i, j, k;
float dummy1, dummy2;
sstr >> i >> dummy1 >> j >> dummy2 >> k;  

Мне просто нужны целые числа из этого.Есть ли способ избежать этих неприятных фиктивных переменных?

Заранее спасибо и хорошего дня!

Ответы [ 2 ]

4 голосов
/ 24 ноября 2010

sstr.ignore(128,' ');

Игнорировать до следующего пробела или до считывания 128 символов.

3 голосов
/ 24 ноября 2010

Вы можете обойтись с одним манекеном (для каждого типа):

std::string str("111 222.2 333 444.4 555");
std::stringstream sstr(str);
int i, j, k;
float dummy;
sstr >> i >> dummy >> j >> dummy >> k;
...