我正在尝试实现一种从文本文件读取输入的方法,以更轻松地加载不同的坐标集,但是我遇到了一个我不明白的错误,即我的stringstream
对象将停在哪里一旦其中一行的格式不正确,就接收字符串。
在我的输出中,您可以看到该字符串在打印出来后仍然完好无损,然后将其放在下一行的stringstream
中,但是在一个格式错误的字符串之后,{{1 }}在我打印出来时不再包含任何内容。
这是怎么回事?
输出:
这是文本文件的外观:
方法代码:
stringstream
答案 0 :(得分:7)
由于流未能读取整数时进入错误状态,因此您需要清除错误状态。为此:
ss.clear();
要做的更容易的是将字符串流的定义移入循环:
istringstream ss(line);
if(ss >> x >> comma >> y >> comma >> direction)
// ...