为什么Createfile()没有二进制标志

时间:2010-10-29 18:18:29

标签: c++ winapi

Windows编程的一大好处是记住在所有文件打开调用中放入'wb'或'rb'或ios :: binary,以便Windows不会快速转换所有的0x13。

我只需转换一堆很好的标准代码来使用Createfile()来获取某个标志 - 而且我发现没有办法指定二进制文件。
怎么知道的?我真的不希望它改变我的MP4流中的字节非常感谢。

3 个答案:

答案 0 :(得分:8)

因为CreateFile不执行“文本模式”/换行转换。这些都是在更高级别处理,无论是在CRT的FILE还是在C ++的iostreams中。

答案 1 :(得分:6)

就Windows API而言,一切都是二进制的。就个人而言,我更喜欢它。我从不在标准库中使用“文本模式”。

答案 2 :(得分:1)

您无法指定二进制文件或文本标志,因为对于Windows操作系统,所有文件都是二进制文件! wb和rb选项是作为C IO流功能的一部分引入的,甚至仅在DOS / Windows上,以帮助开发人员读取和写入文本文件并执行CR / LF到LF转换。