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