我試圖一次讀取一行文本文件並將每行打印到終端窗口。我正在使用g ++編譯mac,例如g ++ cpp3.cpp -o cpp3。getline和使用cout打印
文本文件看起來像這樣:
20100000001 20100000001.xml
20100000002 20100000002.xml
20100000003 20100000003.xml
20100000004 20100000004.xml
這裏是我的代碼:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream ifs("file.txt");
string line;
while(getline(ifs,line)) {
getline(ifs,line);
cout << "[ " << line << " ]" << endl;
}
return 0;
}
我想輸出的樣子:
[20100000001 20100000001.xml]
[20100000002 20100000002.xml]
[20100000003 20100000003.xml]
[20100000004 20100000004.xml]
然而,一切打印到終端中的單行。換句話說,文本文件中的每一行都寫在最後一行。此外,括號「[」和「]」似乎只寫入一次,因此它基本上打印「[」,然後是文件的全部內容,然後是「]」。
原來這就是最終輸出到終端的樣子:
user$ ./cpp3
]10000000401 20100000004.xml
user$
任何人都可以解釋爲什麼這種情況正在發生和/或如何解決這一問題?
注意:您」在每次迭代中重複調用getline兩次。你可以通過hexdump運行程序的輸出嗎? (我猜你的源文本文件中有奇怪的結尾字符。) – Mat 2012-01-28 17:06:11