好的,這是一個奇怪的跨平臺的東西,我遇到了文本文件。說我有一個程序,非常簡單的讀取一個文本文件Windows和Linux文本文件處理故障
// reading a text file
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
string line;
ifstream myfile ("example.txt");
if (myfile.is_open())
{
while (myfile.good())
{
getline (myfile,line);
if (line == "BEGIN")
cout << line << endl;
}
myfile.close();
}
else cout << "Unable to open file";
return 0;
}
所以這讀取一個文本文件,並吐出如果遇到BEGIN它正在讀線。這裏是我正在閱讀的文本文件:
HEADER
BEGIN
X 2
Y 2
Z 1
END
Windows成功吐出BEGIN一次,因爲它遇到過一次。 Linux什麼都沒有吐出來。我在這裏錯過了一些基本的東西嗎?
您是否使用CRLF(Windows)行尾而不是LF(Unix) ?如果您使用的是CRLF,則可能會將CR作爲該行的一部分。 – 2012-02-03 02:03:17