我刚刚遇到了以下行为:使用CStdioFile::WriteString时,它将\n转换为\r\n
仅在将项目转换为Unicode之后,我才注意到代码的早期版本中的这种行为。我想念什么?

我尝试了这段代码:

        CStdioFile file;
        CFileException fileException;

        file.Open(TEXT("c:\\test.txt"), CFile::modeCreate | CFile::modeWrite | CFile::shareExclusive | CFile::typeText, &fileException);

        file.WriteString(TEXT("__CR\r"));
        file.WriteString(TEXT("__LF\n"));
        file.WriteString(TEXT("CRLF\r\n"));
        file.WriteString(TEXT("____"));
        file.Flush();
        file.Close();

现在的结果是:
__CR\r
__LF\r\n   //??
CRLF\r\r\n //??
____

最佳答案

我自己才找到答案:这是CFile::typeText设计的行为。

MSDN documentation指出:



因此,实际上我将模式从CFile::typeBinary更改为CFile::typeText,从而引发了另一种行为。对于CFile::typeBinary,您将不会获得其他回车符。

关于c++ - CStdioFile::WriteString为换行符添加其他回车符吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30374463/

10-13 05:32