我正在尝试编写跨平台 i18n C++ 代码。由于大多数 linux 系统更喜欢使用 UTF-8 作为字符编码,我认为我应该在 linux 上使用 string,在 Windows 上使用 wstring。tchar.h 在 Linux 上可用吗?Linux 上 tchar.h 的等效替代品是什么?
问问题
42488 次
2 回答
12
您可能会发现这篇文章很有用。特别是,在接近尾声时,他们讨论了一些关于使用 TCHAR 和处理 Windows 代码的问题。
文章总结如下:
使用 GNU C 编译器编译此代码时,TCHAR 将被转换为宽字符数据类型(大多数可移植库在其头文件中定义 TCHAR 并参考 wchar_t)。事实上,这就是我如何将 C++ 程序变成一个字谜生成器的方法:我使用标准 C++ 字符串填充了 UTF-8,并使用转换为 wchar_t 的指针将数据提供给库函数。解释为 UTF-32 的 UTF-8 数据等于垃圾(但它对于混淆数据和错误非常有用)。
于 2009-05-21T23:42:54.450 回答
0
为了构建以 Windows 为中心的源代码,我可以使用 Cygwin 的 tchar.h 文件,该文件位于 cygwin\usr\include\w32api 文件夹中。
我实际上是在使用 Android NDK 构建的。出于我的目的,我制作了 tchar.h 的副本并对其进行了修补。
//#include <crtdefs.h>
#define _CRTIMP
//#define _strninc(_pc,_sz) (((_pc)+(_sz)))
// _CRTIMP size_t __cdecl __strncnt(const char *_Str,size_t _Cnt);
于 2017-03-29T16:40:39.923 回答