运算符的正确使用 >> 在同一输入流上的后续时间
Proper usage of operator >> subsequent times on same input stream
我正在编写一些代码以从文件中读取一些参数值。
我知道,假设我有一个从字符串 "10"
创建的 stringstream
对象 stream
我可以初始化一个定义为 int var1;
的数字变量通过键入:
stream >> var1;
如果现在我的 stringstream
对象是从字符串 "10;3;4.5;3.2;"
创建的并且我有四个变量声明如下:
int var1;
int var2;
double var3;
double var4;
我可以这样写吗:
stream >> var1;
stream >> var2;
stream >> var3;
stream >> var4;
为了初始化这个流中的所有四个变量?或者我唯一的选择是实现一个简单的解析器来一次提取每个值,然后将该值存储到每个值中?
嗯,其实我试过了,还是不行。 var1
正确初始化,但其他变量都初始化为 0。
你能解释一下为什么这不起作用吗?预先感谢您的帮助。
使用流有点棘手,但同时也很有趣。
要使用 stringstreams 解析它,只需稍微修改代码以考虑分号。方法如下:
// stream = "10;3;4.5;3.2;"
stream >> var1;
// stream = ";3;4.5;3.2;"
// now if you will input stream >> var2,
// will extract till the next integer value exists.
// But here, since character ';' and not an integer, it won't pass any value to var2.
// To correct it, add this line to take are of the ';' :
char ch;
stream >> ch;
stream >> var2 >> ch;
stream >> var3 >> ch;
stream >> var4;
要理解这一点,您需要更好地理解流如何从输入缓冲区提取输入。我试着一步一步地解释它。
为了更好地理解这个主题,请参阅:
http://www.learncpp.com/cpp-tutorial/184-stream-classes-for-strings/
我正在编写一些代码以从文件中读取一些参数值。
我知道,假设我有一个从字符串 "10"
创建的 stringstream
对象 stream
我可以初始化一个定义为 int var1;
的数字变量通过键入:
stream >> var1;
如果现在我的 stringstream
对象是从字符串 "10;3;4.5;3.2;"
创建的并且我有四个变量声明如下:
int var1;
int var2;
double var3;
double var4;
我可以这样写吗:
stream >> var1;
stream >> var2;
stream >> var3;
stream >> var4;
为了初始化这个流中的所有四个变量?或者我唯一的选择是实现一个简单的解析器来一次提取每个值,然后将该值存储到每个值中?
嗯,其实我试过了,还是不行。 var1
正确初始化,但其他变量都初始化为 0。
你能解释一下为什么这不起作用吗?预先感谢您的帮助。
使用流有点棘手,但同时也很有趣。 要使用 stringstreams 解析它,只需稍微修改代码以考虑分号。方法如下:
// stream = "10;3;4.5;3.2;"
stream >> var1;
// stream = ";3;4.5;3.2;"
// now if you will input stream >> var2,
// will extract till the next integer value exists.
// But here, since character ';' and not an integer, it won't pass any value to var2.
// To correct it, add this line to take are of the ';' :
char ch;
stream >> ch;
stream >> var2 >> ch;
stream >> var3 >> ch;
stream >> var4;
要理解这一点,您需要更好地理解流如何从输入缓冲区提取输入。我试着一步一步地解释它。
为了更好地理解这个主题,请参阅: http://www.learncpp.com/cpp-tutorial/184-stream-classes-for-strings/