Aru*_*run 4 c++ io binaryfiles filestream
在我使用以下代码片段的实验中,我没有找到任何特别的区别,无论我是否使用ios创建流:二进制模式:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我试图将原始源文件复制到另一个具有不同名称的文件中.
我的问题是当使用/不使用ios :: binary模式打开fstream对象时,读/写调用(与二进制文件IO相关)之间的区别是什么?使用二进制模式有什么好处吗?什么时候何时何时不使用它来做文件IO?
Mar*_*ork 10
binary和text模式之间的唯一区别是如何处理'\n'字符.
在binary模式中没有翻译.
在text模式\n被翻译成写入end of line sequence.
在text模式end of line sequence被转换在读入\n.
该end of line sequence平台相关.
例子:
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.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1723 次 |
| 最近记录: |