gpt4 book ai didi

c++ - CStdioFile::WriteString 为换行添加额外的回车?

转载 作者:行者123 更新时间:2023-11-30 02:38:52 25 4
gpt4 key购买 nike

我刚遇到以下行为:当使用 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状态:

Text mode provides special processing for carriage return–linefeed pairs. When you write a newline character (0x0A) to a text-mode CStdioFile object, the byte pair (0x0D, 0x0A) is sent to the file. When you read, the byte pair (0x0D, 0x0A) is translated to a single 0x0A byte.

所以实际上我将模式从 CFile::typeBinary 更改为 CFile::typeText 从而引发了另一种行为。对于 CFile::typeBinary,您将不会获得额外的回车符。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com