我在 Visual Studio 2012 的项目属性中看到您可以为您的应用程序选择字符集。
我使用 Unicode 字符集。 多字节字符集有什么问题?或者更好的是,我为什么要使用 Unicode?p>
以我正在做的一个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/