4

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

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

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

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

4

3 回答 3

1

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

当您需要 Unicode 字符的 8 位表示时,UTF-8 编码很有用。(有关更多信息,请参阅如何编写对 UTF-8 安全的代码?)但请注意,您可能需要支持其他编码。

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

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

于 2008-10-02T18:57:06.017 回答
1

std::wstring 是在 Windows 上保存 Unicode 字符串的好选择,但在大多数其他平台上却不是,而且对于可移植代码当然也不是。最好尝试坚持使用 std::string 和 UTF-8。

于 2008-10-02T19:45:51.623 回答
1

您可能会有些头疼,因为C++ 标准规定在写入文件时需要宽流将双字节字符转换为单字节,而这种转换的完成方式取决于实现

于 2008-10-04T11:40:52.483 回答