gpt4 book ai didi

c++ - 使用/不使用 ios::binary 模式打开流时使用读/写的区别

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:11:02 24 4
gpt4 key购买 nike

在我对以下代码片段的实验中,我没有发现使用/不使用 ios:binary 模式创建流有什么特别的区别:

int main()
{
ifstream ostr("Main.cpp", ios::in | ios::binary | ios::ate);
if (ostr.is_open())
{
int size = ostr.tellg();
char * memBlock = new char[size + 1];
ostr.seekg(0, ios::beg);
ostr.read(memBlock, size);
memBlock[size] = '\0';
ofstream file("trip.cpp", ios::out | ios::binary);
file.write(memBlock, size);
ostr.close();
}
}

这里我试图将原始源文件复制到另一个具有不同名称的文件中。

我的问题是,当使用/不使用 ios::binary 模式打开 fstream 对象时,读/写调用(与二进制文件 IO 关联)之间有什么区别?使用二进制模式有什么好处吗?在进行文件 IO 时何时使用它,何时不使用它?

最佳答案

binarytext 模式之间的唯一区别是如何处理 '\n' 字符。

binary 模式下,没有翻译。

text 模式下,\n 在写入时被翻译成 行尾序列
text 模式下,end of line sequence 在读取时被翻译成 \n

行尾依赖于平台。

例子:

基于 ASCII 的系统:

LF    ('\0x0A'):      Multics, Mac OS X, BeOS, Amiga, RISC OS
CRLF ('\0x0D\0x0A'): Microsoft Windows, DEC TOPS-10, RT-11
CR: ('\0x0D'): TRS-80, Mac OS Pre X
RS: ('\0x1E'): QNX pre-POSIX implementation.

关于c++ - 使用/不使用 ios::binary 模式打开流时使用读/写的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12766636/

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