c++ - 嵌入式应用程序从 std::string 切换到 std::wstring?

标签 c++ unicode stl embedded

到目前为止,我一直在我的嵌入式系统(路由器、交换机、电信设备等)的 C++ 应用程序中使用 std::string。

对于下一个项目,我正在考虑从 std::string 切换到 std::wstring 以获得 Unicode 支持。例如,这将允许最终用户在命令行界面 (CLI) 中使用中文字符。

我应该期待什么并发症/头痛/惊喜?例如,如果我使用仍然使用 std::string 的第三方库怎么办?

由于对国际字符串的支持对我所从事的嵌入式系统类型的要求并不是那么强烈,所以我只会在不会引起严重问题的情况下才这样做。

最佳答案

请注意,许多通信协议(protocol)需要 8 位字符(或 7 位字符,或其他变体),因此您通常需要在内部 wchar_t/wstring 数据和外部编码之间进行转换。

当您需要 Unicode 字符的 8 位表示时,UTF-8 编码很有用。 (有关更多信息,请参阅 How Do You Write Code That Is Safe for UTF-8?。)但请注意,您可能需要支持其他编码。

越来越多的第三方库支持 Unicode,但仍有很多第三方库不支持。

我真的不能告诉你这是否值得让你头疼。这取决于您的要求。如果您是从头开始,那么从 std::wstring 开始比稍后从 std::string 转换为 std::wstring 更容易。

关于c++ - 嵌入式应用程序从 std::string 切换到 std::wstring?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/163962/

相关文章:

c++ - 我如何创建一个提升的子进程并继承父进程的句柄

c++ - 带 boost 的大整数:太大而无法以任何整数类型表示

xcode - 从变量打印 unicode 字符(快速)

c++ - 迭代器 VS const_iterator,与 distance() 一起使用

c++ - 为什么更喜欢 std::vector 而不是 std::deque?

c++ - 如何解决这个前向类声明问题?

c++ - 如何动态分配单个 int[10] 对象?

python-3.x - 如何使 python 3 print() utf8

C#:如何获取字符串的第一个字符?

c++ - 迭代 std::set 如何返回排序结果