编写unicode c++源代码
Writing unicode C++ source code
我在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函数,并且始终在系统接口级别使用char const*
。但同样,这取决于你在做什么。这只是一个将军指导方针。对于其余部分,我会坚持使用std::string
,除非不这么做是有充分理由的。
你不需要显式地调用..W
版本的函数,因为这应该已经被包含文件和你使用的设置所覆盖。因此,如果您为unicode支持进行编译,那么将使用W
版本的系统调用,否则将使用A
.
我个人只会编译Unicode,如果你真的可以测试它。至少,您不应该假设您的应用程序确实可以在所有情况下正常工作,仅仅因为您为它进行了编译。为它编译只是第一步,但是当然,您必须使用适当的类型并测试您的代码,以确保没有您可能没有注意到的影响。
- 在Linux中哪里可以找到互斥、未来等的源代码
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 难以理解某些人解决IOI问题的源代码
- 使用g++编译hdf5源代码
- 如何使用C++读取另一个程序中的源代码输出
- Poco FindMySql.cmake 无法找到 MySQL 源代码
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- C++出现控制台错误.我无法识别源代码的问题
- Qt Quick,如何更改 Ui 源代码?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 从macOS Catalina上的源代码编译LLVM(如何解决未找到"stdio.h")
- 如何使用QT创建器获取网页源代码?
- 从源代码构建 gRPC C++
- 如何使用我构建的库,而不会从源代码出错,但不为我自己的项目编译?
- 如何在使用 LLVM 编译时获取部分源代码的二进制代码
- 如何在源代码中包含外部库的头文件?
- 如何查找 torch.bmm 的 c++ 源代码 pytorch.
- 是否有可能使用debug_info获取ELF文件的源代码?
- 为什么Qt必须从源代码构建以进行交叉编译?