2011-05-10 4 views
1

У меня есть объект istringstream со строкой формата STRING,INT,INT,INT например. "name, 20,30,40" Я хочу прочитать значения в переменных определенных типов, таких как std: string и int. Как я могу это сделать?C++: Чтение из stringstream

ответ

3

Ленивый путь:

getline(stream, str, ','); 
char c; 
stream >> i1 >> c >> i2 >> c >> i3; 

Это «ленивый», потому что он не обрабатывает ошибки формата в любой разумный путь.

Более интеллектуальные способы будут разделены на запятые на вектор строк (которые затем могут быть преобразованы в целые числа по мере необходимости) или использовать полноценный синтаксический анализатор, например boost.spirit.

+0

Вы можете легко сделать этот дескриптор ошибок: 'char c; if (getline (stream, str, ',') && stream >> i1 >> c && c == ',' && stream >> i2 >> c && c == ',' && stream >> i3) .. . –

+0

@Tony Действительно, это относится к обработке ошибок. – Cubbi

Смежные вопросы