如何更改txt文件中的下线编码? 我在Visual Studio 2008中用C++编写,我在其他库中有问题,它们不接受我用TXT文件生成的行结束(EOL)。

如何更改txt文件中的下线编码? 我在Visual Studio 2008中用C++编写,我在其他库中有问题,它们不接受我用TXT文件生成的行结束(EOL)。,c++,file,eol,C++,File,Eol,在使用编写文件时,如何更改 std::ofstream myFile; myFile.open("traindata.txt"); myFile << "stuff" << endl; // or //myFile << "stuff" << '\n'; myFile.close(); std::of stream myFile; myFile.open(“traindata.txt”); myFile使用myFile是否可能您只是不想\n发生

在使用编写文件时,如何更改

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

myFile使用
myFile是否可能您只是不想\n发生行尾序列?使用
std::ios\u base::binary
打开文件:这将精确地关闭转换。。。并且不要使用
std::endl
,除非您确实想要刷新流:

std::ofstream myFile("traindata.txt", std::ios_base::binary);
myFile << "stuff\n";
std::ofstreammyfile(“traindata.txt”,std::ios\u base::binary);

MyFrase

你应该以二进制模式打开文件流,以保持C++库自动转换行结束:

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

这将保持C++库从“\n”转换为OS特定的EOL符号(Windows上的CR-LF)。

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


或者
dos2unix
unix2dos
cygwin

上生成代码的哪一行结尾?这些“其他库”希望使用哪一行结尾?@GregHewgill我不确定生成的是哪一行结尾,但我需要LF。当您在windows上使用
endl
\n
时,在文本模式下它会自动转换为CRLF。我建议您熟悉十六进制编辑器,以便(a)找出您现在正在生成的内容,并(b)确保在更改代码时所做的操作是正确的。@Jesse那么我能做些什么来获得LF?我试过使用
myFile.open(“traindata.txt”,std::ios_base::out | std::ios_base::binary)未成功:(这不是一个完整的答案,因为在Windows上,将
“\n”
写入文本文件会自动转换为
”\r\n
-1.使用
myfile@GregHewgill如何
\n
?我似乎记得std::endl在应用于文本文件时不会刷新缓冲区,但我只能找到100%确认您在此处所述内容的内容。