По какой-то причине моя функция записи в текстовый файл внезапно перестала работать.
void write_data(char* filename, char* writethis)
{
ofstream myfile;
myfile.open (filename, std::ios_base::app);
myfile << endl << writethis;
myfile.close();
}
Функция вызывалась из цикла, поэтому в основном она начиналась с пустой строки и добавляла все последующие строки «writeethis» на новой строке.
И вдруг никаких новых строк. Весь текст был добавлен в одну строку. Итак, я немного покопался и наткнулся на следующее:
Итак, я изменил строку на
myfile << "\r\n" << writethis;
, и это снова сработало.Но теперь я в замешательстве. Я кодирую на linux , но я читаю текстовые файлы, созданные с помощью программы, в окнах после их передачи с помощью filezilla . Теперь, какая часть этого привела к тому, что строки в текстовом файле выглядели как одна строка?
Я был почти уверен, что "endl" отлично работает для Linux, поэтому теперь я думаю, что окна испортили файл после переносить их с помощью filezilla? Неправильная запись (и чтение) текстового файла гарантирует, что моя программа сломается, поэтому, если кто-то может объяснить это, я буду признателен.
Я также не помню, что я изменил в своей программе, чтобы вызвать сбой, потому что раньше она работала нормально. Единственное, что я добавил, - это многопоточность.
Изменить: Я попытался поменять местами режим передачи с ASCII / Binary (даже удалил принудительное ASCII-расширение-текст-текст), но это не имеет никакого значения. Новые строки появляются в Linux, но не в Windows.
Как странно.