我在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之前就有了空格。
糟透了。你们是对的。谢谢你的帮助。
答案 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
上的unix2dos
,cygwin
答案 3 :(得分:-1)
使用myfile << "\r\n"
表示Windows样式的结尾,或myfile << "\n"
表示UNIX样式。