gpt4 book ai didi

c++ - 为什么 char 0xA 在用控制台写入文件时会变成 0xD + 0xA 字符?

转载 作者:行者123 更新时间:2023-12-01 15:10:49 25 4
gpt4 key购买 nike

我用过 std::cout << (char)0xA在我的 C++ 代码中。
然后,我写到控制台 myProgram.exe > file.txt .
接下来,我打开了 file.txt使用 HEX 编辑器,我找到了 0D 0A而不是 0A .

不知道为什么会这样。请帮忙。

HEX Editor screenshot (look at 0x82 and 0x19B)

最佳答案

C 和 C++ 标准都指定当一个流以文本模式打开时,向它发送一个 \n 将在目标系统上执行任何必要的操作以将文件推进到下一个线。在 Unix 系统上,这仅意味着将 \n 输出到文件。在某些基于记录的系统上,这意味着刷新当前行输出记录并前进到下一个记录。在 MS-DOS 和 Windows 上,这意味着将 \r\n 都发送到流。

从历史上看,向电传打字机发送 \r 会将笔架重置到左边缘,而发送 \n 则会前进纸张。有人意识到虽然在不进纸的情况下重置托架的能力很有用,但在不重置托架的情况下让 \n 进纸的功能要差得多,因此一些设备会响应 \n 前进到下一行的开始。然而,MS-DOS 选择以一种方式存储文件,如果直接将文件发送到打印机,\n 将前进到下一行的当前位置,并且一个人会如果想转到下一行的开头,则同时发送 \r\n

关于c++ - 为什么 char 0xA 在用控制台写入文件时会变成 0xD + 0xA 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60822275/

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