【发布时间】:2012-03-08 19:25:53
【问题描述】:
UNICODE 上的 Windows API 似乎很大,您在 Visual C++ 中创建了一个新项目,默认情况下将其设置为 UNICODE。
而我想成为一名优秀的 Windows 程序员,我想使用UNICODE。
问题在于 C++ 标准库和 STL(例如 std::string 或 std::runtime_error)不能很好地与 UNICODE 字符串一起使用.
我只能将 std::string 或 char* 传递给 std::runtime_error,而且我很确定 std::string i> 不支持UNICODE。
所以我的问题是,我应该如何使用诸如 std::runtime_error 之类的东西?我应该将UNICODE 和普通ANSI 混合使用吗? (我认为这是一个坏主意......)
在我的整个项目中使用ANSI? (不喜欢......)还是什么?
【问题讨论】:
-
它们是例外,你认为你需要将它们国际化并且真的需要它们的 unicode 支持吗?
-
您可以在整个过程中主要使用
std::wstring。std::runtime_error是一个不幸的例外(没有双关语!)。 -
@Björn 相关但不重复。另一个问题的答案是关于使用
char*存储UTF-8。这在这里无济于事,因为 WinAPI 使用wchar_t和 UTF-16,因此无法调整答案。 -
理想情况下,Windows 会更新为支持并默认开始使用 UTF-8 语言环境。
标签: c++ windows unicode stl c++-standard-library