为什么stringstream停止接收字符串? [C ++]

时间:2019-02-15 23:24:12

标签: c++ string c++11 ifstream stringstream

我正在尝试实现一种从文本文件读取输入的方法,以更轻松地加载不同的坐标集,但是我遇到了一个我不明白的错误,即我的stringstream对象将停在哪里一旦其中一行的格式不正确,就接收字符串。

在我的输出中,您可以看到该字符串在打印出来后仍然完好无损,然后将其放在下一行的stringstream中,但是在一个格式错误的字符串之后,{{1 }}在我打印出来时不再包含任何内容。

这是怎么回事?

输出:

image

这是文本文件的外观:

image

方法代码:

stringstream

1 个答案:

答案 0 :(得分:7)

由于流未能读取整数时进入错误状态,因此您需要清除错误状态。为此:

ss.clear();

要做的更容易的是将字符串流的定义移入循环:

istringstream ss(line);
if(ss >> x >> comma >> y >> comma >> direction)
    // ...