Хорошо, что это причудливая кросс-платформенная вещь, с которой я сталкиваюсь с текстовыми файлами. Скажем, у меня есть программа, которая очень просто читает текстовый файлПроблемы с обработкой текстовых файлов 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;
}
Так что читает текстовый файл и выплевывает линию он читает, если он встречает НАЧАТЬ. Вот текстовый файл, который я читаю:
HEADER
BEGIN
X 2
Y 2
Z 1
END
Windows успешно выплевывает BEGIN один раз, так как встречается один раз. Linux ничего не выплевывает. Есть ли что-то фундаментальное, что мне здесь не хватает?
Вы используете концы строк CRLF (Windows) вместо LF (Unix) ? Если вы используете CRLF, возможно, он читает CR как часть строки. –