如何在txt文件中更改EOL编码?

时间:2012-01-05 21:32:00

标签: c++ file eol

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

如何在使用

编写文件时更改它
std::ofstream myFile;
myFile.open("traindata.txt");
myFile << "stuff" << endl;
// or 
//myFile << "stuff" << '\n';
myFile.close();

编辑2:

好吧,我在代码中犯了一个错误:我在每次迭代时都附加了“0”,这样我在EOL之前就有了空格。

糟透了。你们是对的。谢谢你的帮助。

4 个答案:

答案 0 :(得分:4)

你是否有可能不希望\ n结束行序列?使用std::ios_base::binary打开您的文件:这会完全关闭转换。 ...除非你真的想要刷新流,否则不要使用std::endl

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

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

下载notepad ++ - 应该可以解决问题。

dos2unix上的unix2doscygwin

答案 3 :(得分:-1)

使用myfile << "\r\n"表示Windows样式的结尾,或myfile << "\n"表示UNIX样式。