1

我正在用 C++ 编写 Visual Studio 2008,但我遇到了其他库的问题 - 他们不接受我用我的 txt 文件生成的行尾 (EOL)。

如何在编写文件时更改它

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

编辑 2:

好的,我在代码中犯了一个错误:我为每次迭代都附加了“0”,以便在 EOL 之前有空格。

由坏。你们是对的。感谢帮助。

4

4 回答 4

4

您是否可能只是不希望 \n 到行尾的序列发生?使用打开您的文件std::ios_base::binary:这会精确地关闭转换。std::endl...除非你真的想刷新流,否则不要使用:

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

close()除非您想检查它是否成功,否则通常也是不必要的。

于 2012-01-05T21:36:57.353 回答
0

下载记事本++ - 这应该能够解决问题。

或者dos2unixunix2doscygwin

于 2012-01-05T22:20:33.537 回答
0

您应该以二进制模式打开文件流,以防止 C++ 库自动转换行尾:

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

这将使 C++ 库无法将 '\n' 转换为特定于操作系统的 EOL 符号(Windows 上的 CR-LF)。

于 2012-01-05T21:40:27.517 回答
-1

用于myfile << "\r\n"Windows 风格的结尾或myfile << "\n"UNIX 风格的结尾。

于 2012-01-05T21:33:54.323 回答