0

我正在将 C++ Win32 应用程序转换为 Linux,我在 Win32 应用程序中使用的类型和函数有问题,我已经解决了类型问题(通过使用 typedef 和 micros)但我不知道应该使用哪个函数来代替这些功能 ?

-创建文件

-读取文件

-获取文件大小

-GlobalAlloc

-wsprintf

-全球免费

4

2 回答 2

2

在大多数情况下,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应该可以用相关的mallocornewfreeor替换,delete具体取决于它的使用方式。

打印成字符串的标准函数wchar_tis swprintf,如果编译器符合标准,它也应该在 Windows 上工作。

使用标准 C(++) 库的好处是您现在可以为 windows 和 linux 编译代码,而无需更改代码。而且您不太可能分辨出性能上的差异。

于 2013-05-01T08:39:27.267 回答
2
  • CreateFileopen
  • ReadFileread
  • GetFileSize: stat(这也为您提供了很多其他信息。对于大小,该字段是st_size。)
  • GlobalAllocGlobalFree:你可以只使用mallocfree
  • wsprintf: 这看起来和标准 C 函数一样swprintf,它应该存在于任何支持 C 的系统上。
于 2013-05-01T08:34:50.940 回答