c++ - 编写unicode C++源代码

标签 c++ visual-studio unicode internationalization

我在 Visual Studio 2012 的项目属性中看到您可以为您的应用程序选择字符集。

我使用 Unicode 字符集。 多字节字符集有什么问题?或者更好的是,我为什么要使用 Unicode?

以我正在做的一个DLL中的这段代码为例

RECORD_API int startRecording(
   char *cam_name,      // Friendly video device name
   char *time,          // Max time for recording
   char *f_width,       // Frame width
   char *f_height,      // Frame height
   char *file_path)     // Complete output file path
{
  ...
}

Windows.h 头文件中的许多 Unicode 函数都使用 wchar_t 参数;我是否也应该将 wchar_t 用于我的函数参数?

我是否应该始终明确显示 W 函数(例如:ShellExecuteW)?

最佳答案

首先,不管界面怎么说,问题都不是 Unicode 与否,但 UTF-16 或 UTF-8。实际上,对于 外部数据,你应该只使用 UTF-8。在内部,它 取决于你在做什么。 UTF-8 到 UTF-16 的转换是 增加了复杂性,但对于更复杂的操作,它可能 在 UTF-16 中更容易工作。 (虽然两者之间的差异 UTF-8 和 UTF-16 并不大。为了获得任何实际利益, 你必须使用 UTF-32,即使那样......)

在实践中,我会完全避免使用 W 函数,并且 始终在系统接口(interface)级别使用 char const*。但 同样,这取决于你在做什么。这只是一般 准则。对于其余部分,我会坚持使用 std::string unless 有一些强有力的理由不这样做。

关于c++ - 编写unicode C++源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17145967/

相关文章:

c++ - 正确设置和使用 zlib

visual-studio-2010 - 构建和部署有什么区别?

C# UNICODE 到 ANSI 转换

c++ - 在 C++ 中使用模板

c++ - INSERT into database fetch id 执行后如何获取插入行的ID?

c# - 接口(interface)变量声明

git - 寻求单个团队项目下多个 Git 存储库的命名约定

javascript - 使用 Javascript 正则表达式匹配重音字符

php - Inpage urdu 到 unicode 乌尔都语转换器

c++ - 您的计算机中缺少 api-ms-win-core-winrt-string-l1-1-0.dll