Jes*_*der 9 c++ string unicode stl stream
我需要修改我的程序以接受Unicode,这可能来自任何UTF-8和各种UTF-16和UTF-32编码.我对Unicode知之甚少(虽然我读过Joel Spolsky的文章和 维基百科页面).
现在,我使用的是std::istream和阅读我的输入char通过char,然后存储(必要时)在std::string.我想
另外,如果可能的话,我想尽可能地节省空间(所以如果我们不需要超过一个字节/字符,我们就不会使用它).根据我的理解,这意味着存储在UTF-8中,这很好,但我不知道这样做的标准字符串(根据我的理解,wchar_t具有实现定义的大小和编码).
小智 2
只要您主要使用标准 ASCII 字符,UTF-8 就可以节省空间。
std::string 对于 UTF-8 没有问题,因为其中没有 0 字节。如果输入字符具有 NULL 字节(如 UTF-32 中那样),您可以告诉 std::string 输入字符有多长。std::string 无法告诉您 UTF-8 字符串有多少个字符,您必须使用外部函数。
另外,还有一个使用 wchar_t 的 std::string 的宽版本,而不是 char,我只是忘记了名字。
boost 中还有一些用于编码之间转换的方面。
您可以使用带有 boost 的标准库。或者您可以使用 C 库中的字符串处理函数。还有Qt、Tcl等编程框架提供的功能。
参见示例: