对于嵌入式应用程序,从std :: string切换到std :: wstring?

时间:2008-10-02 18:51:34

标签: c++ unicode stl embedded

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

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

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

由于对国际字符串的支持并不是对我所使用的嵌入式系统类型的强烈要求,我只会在不会引起严重麻烦的情况下这样做。

3 个答案:

答案 0 :(得分:1)

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

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

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

我无法告诉你是否值得头痛。这取决于您的要求。如果你从头开始,那么从std :: wstring开始比从std :: string转换为std :: wstring更容易。

答案 1 :(得分:1)

std :: wstring是在Windows上保存Unicode字符串的一个很好的选择,但在大多数其他平台上不是,并且最终不适用于可移植代码。最好尝试坚持使用std :: string和UTF-8。

答案 2 :(得分:1)