我正在将C ++ Win32应用程序转换为Linux,我在Win32应用程序中使用的类型和函数存在问题,我已经解决了类型问题(通过使用typedef和micros)但我不知道应该使用哪个函数而不是这些功能?
- ReadFile
-GlobalAlloc
-wsprintf
-GlobalFree
答案 0 :(得分:2)
CreateFile
:open
ReadFile
:read
GetFileSize
:stat
(这会为您提供很多其他内容
信息也是如此。对于大小,该字段为st_size
。)GlobalAlloc
和GlobalFree
:您可以使用malloc
和
free
。wsprintf
:这看起来与标准相同
C函数swprintf
,它应该出现在任何支持C的系统上。答案 1 :(得分:2)
在大多数情况下,CreateFile
,ReadFile
可以替换为标准C或C ++文件管理(即FILE *
或fstream
类型操作) - 但有一些您无法达到这种方式的选项(例如对文件的“独占访问”),所以魔鬼就像往常一样,在细节中。
修改:fopen
将创建,fread
将从FILE *
读取,fstream::open
和fstream::read
将是创建和读取{fstream
的函数{1}}。
GetFileSize
通常通过“寻找文件末尾,然后获取文件位置”来完成。因此,对于FILE *
使用fseek(fp, 0, SEEK_END);
和size = ftell();
,或fstream::seekg();
和fstream::tellg()
- 在您阅读之前不要忘记寻找回头文件。
GlobalAlloc
和GlobalFree
应该可以替换为malloc
或new
以及free
或delete
的相关内容,具体取决于具体方式它被使用了。
打印成wchar_t
字符串的标准函数是swprintf
,如果编译器符合标准,它也适用于Windows。
使用标准C(++)库的好处是,您现在可以编译Windows和Linux的代码,而无需更改代码。而且你不太可能分辨出性能差异。