Как изменить кодировку EOL в текстовых файлах? - PullRequest
1 голос
/ 06 января 2012

Я пишу в Visual Studio 2008 на C ++, и у меня проблемы с другими библиотеками - они не принимают окончания строк (EOL), которые я генерирую с моими текстовыми файлами.

Как я могу изменить это при записи файла с

std::ofstream myFile;
myFile.open("traindata.txt");
myFile << "stuff" << endl;
// or 
//myFile << "stuff" << '\n';
myFile.close();

РЕДАКТИРОВАТЬ 2:

Хорошо, я допустил ошибку в коде: я добавлял «0» для каждой итерации, чтобы у меня был пробел перед EOL.

Плохо. Вы, ребята, были правы. Спасибо за помощь.

Ответы [ 4 ]

4 голосов
/ 06 января 2012

Возможно ли, что вы просто не хотите, чтобы \ n заканчивался последовательностью строк? Откройте файл, используя std::ios_base::binary: это точно отключит преобразование. ... и не используйте std::endl, если вы действительно не хотите очистить поток:

std::ofstream myFile("traindata.txt", std::ios_base::binary);
myFile << "stuff\n";

Как правило, close() также не требуется, если только вы не хотите проверить его успешность.

0 голосов
/ 06 января 2012

Скачать блокнот ++ - это должно быть в состоянии решить проблему.

Или dos2unix, unix2dos на cygwin

0 голосов
/ 06 января 2012

Вам следует открыть файловый поток в двоичном режиме, чтобы библиотека C ++ не преобразовывала окончания строк автоматически:

myFile.open("traindata.txt", std::ios_base::out|std::ios_base::binary);

Это не позволит библиотеке C ++ преобразовывать '\ n' в символ EOL для конкретной ОС (CR-LF в Windows).

0 голосов
/ 06 января 2012

Используйте myfile << "\r\n" для окончания в стиле Windows или myfile << "\n" для стиля в UNIX.

...