读书人

C/C++/Win32API操作资料有什么不同

发布时间: 2013-02-27 10:48:11 作者: rapoo

C/C++/Win32API操作文件有什么不同?
C/C++/Win32API操作文件有什么不同?
以下三种方式有什么不同,各有什么优缺点!
谢谢各位!!

C语言的
FILE* pFile = fopen("C:\1.txt","rb")
fread()
fclose()

C++的
ofstream ofs("4.txt");
ofs.write("",);
ofs.close();

Win32API的
CreateFile
WriteFile
CloseHandle c++ c file api
[解决办法]
fopen: C语言相关的标准输入输出库中的库函数,这是跨平台的
ofstream: C++中对fopen进行面向对象的封装,使对文件的操作就像对文件对象的操作一样,而不是像面向过程的函数调用, 个人感觉只是编程模式的区别.
CreateFile : windows下API函数

区别: 操作文件实际就是对硬件设备的操作,于是相关的系统调用是平台相关的.
windows就是用CreateFile(),Linux是open()
但是C语言是跨平台的,它需要一套统一的标准库函数,于是各平台系统上对C标准库进行了各自的封装.
在WINDOWS下,标准库在CRT中,fopen函数用CreateFile实现
在LINUX下,标准库在glibc中,fopen函数用open实现
因此对于fopen来说,无论什么平台调用方式都是一致的,所以你fopen写程序在windows可以编译通过,linux也可以了.反之CreateFile就不行.
[解决办法]
楼上说的有道理


补充:

FILE* pFile = fopen("C:\1.txt","rb")

楼上应该是初学者, 改为 c:\\
[解决办法]
在Windows下,“C和C++的”最终都要调用“Win32API的”。
[解决办法]

引用:
在Windows下,“C和C++的”最终都要调用“Win32API的”。


+1

所有与系统相关的库函数最终都要调用某个API
[解决办法]
引用:
引用:在Windows下,“C和C++的”最终都要调用“Win32API的”。

+1

所有与系统相关的库函数最终都要调用某个API


+2

还有各种OS
[解决办法]
其实吧,底下都是那些事。

读书人网 >C++

热点推荐