Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:从字符串流读取_C++ - Fatal编程技术网

C++ C++;:从字符串流读取

C++ C++;:从字符串流读取,c++,C++,我有一个格式为字符串的istringstream对象 STRING,INT,INT,INT 如。 姓名,20,30,40 我想把这些值读入特定类型的变量中,比如std:string和int。 我该怎么做呢?懒惰的方式: getline(stream, str, ','); char c; stream >> i1 >> c >> i2 >> c >> i3; 它是“懒惰的”,因为它不以任何合理的方式处理格式错误 更聪明的方法是将逗号拆

我有一个格式为字符串的istringstream对象
STRING,INT,INT,INT
如。 姓名,20,30,40 我想把这些值读入特定类型的变量中,比如std:string和int。 我该怎么做呢?

懒惰的方式:

getline(stream, str, ',');
char c;
stream >> i1 >> c >> i2 >> c >> i3;
它是“懒惰的”,因为它不以任何合理的方式处理格式错误


更聪明的方法是将逗号拆分为字符串向量(然后根据需要将其转换为整数),或者使用成熟的解析器,如boost.spirit。

您可以轻松地处理错误:
char c;如果(getline(stream,str,',')&&stream>>i1>>c&&c==','&&stream>>i2>>c&&c==','&&stream>>i3).