1
我試圖通過逐行閱讀並解析每行使用stringstream
來解析文件。下面是我的代碼如果行不是空格終止,stringstream會進入失敗狀態
#include <sstream>
#include <fstream>
#include <iostream>
using namespace std;
int main() {
fstream f("input.txt", ios::in);
stringstream ss;
string line;
while (getline(f, line)) {
cout << "Got line `" << line << "'" << endl;
ss.str(line);
string prefix;
ss >> prefix;
cout << "Prefix: " << prefix << endl;
}
return 0;
}
的簡化版本在類似input.txt中的情況下(↲用來表示換行符)
a b↲
c d↲
e f↲
一切工作的建議,但對於文件,如
a↲
c d↲
e f↲
stringstream在a↲
行之後進入失敗(不確定)狀態。看起來stringstream
期望該行被空白終止或類似。當然,我可以手動添加一個空格或換行符。無論如何,我在stringstream
手冊中未能找到關於此行爲的任何信息。
所以我的問題是爲什麼會發生這種情況,以及如何正確解決這個問題。
如果沒有更多輸入,您希望流如何處理? – jxh 2014-12-06 17:02:12
哦,所以它僅僅是stringstream的eof。我的壞,非常感謝。 – uranix 2014-12-06 17:04:02