Difference in using read/write when stream is opened with/without ios::binary mode(使用/不使用 ios::binary 模式打开流时使用读/写的区别)
问题描述
在我使用以下代码片段的实验中,我没有发现任何特别的区别,无论是使用还是不使用 ios:binary 模式创建流:
In my experiments with the following code snippet, I did not find any particular difference whether i created the streams with/without the ios:binary mode:
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] = ' ';
ofstream file("trip.cpp", ios::out | ios::binary);
file.write(memBlock, size);
ostr.close();
}
}
在这里,我试图将原始源文件复制到另一个具有不同名称的文件中.
Here I am trying to copy the original source file into another file with a different name.
我的问题是在使用/不使用 ios::binary 模式打开 fstream 对象时,读/写调用(与二进制文件 IO 相关联)有什么区别?使用二进制模式有什么好处吗?文件IO什么时候用什么时候不用?
My question is what is the difference between the read/write calls(which are associated with binary file IO) when an fstream object is opened with/without ios::binary mode ? Is there any advantage of using the binary mode ? when to and when not to use it when doing file IO ?
推荐答案
binary
和 text
模式之间的唯一区别是如何处理 '
' 字符.
The only difference between binary
and text
mode is how the '
' character is treated.
在binary
模式下,没有 翻译.
在text
模式下
在写入时被翻译成行尾
.
在 text
模式下,end of line sequence
在读取时被翻译成
.
In text
mode
is translated on write into a the end of line sequence
.
In text
mode end of line sequence
is translated on read into
.
行尾
是平台相关的.
示例:
LF (' x0A'): Multics, Mac OS X, BeOS, Amiga, RISC OS
CRLF (' x0D x0A'): Microsoft Windows, DEC TOPS-10, RT-11
CR: (' x0D'): TRS-80, Mac OS Pre X
RS: (' x1E'): QNX pre-POSIX implementation.
这篇关于使用/不使用 ios::binary 模式打开流时使用读/写的区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用/不使用 ios::binary 模式打开流时使用读/写的区别
基础教程推荐
- Windows Media Foundation 录制音频 2021-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- 为什么语句不能出现在命名空间范围内? 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 从 std::cin 读取密码 2021-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07