用C++存储UTF-8字符串的最佳类型是什么?如果可能的话,我想避免自己上课.
我最初的想法是std::string- 然而,这char用作底层类型.char可能是未签名或签名 - 它会有所不同.在我的系统上,它已签名.但是,UTF-8代码单元是无符号八位字节.这似乎表明这是错误的类型.
这导致我们std::basic_string<unsigned char>- 这似乎符合法案:无符号,8位(或更大)字符.
但是,大多数事情似乎都在使用char.例如,glib使用char.C++ ostream的用法char.
思考?
我只是使用std :: string,因为它与UTF-8处理数据的理想一致,就像你用null终止的ASCII字符串一样,除非你真的需要它们的unicode-ness.
我也很喜欢的gtkmm的油嘴:: ustring,但是,只有当你写一个gtkmm的(或至少Glibmm)应用程序的工作.
我总是只使用std :: string,不管怎么说,"签名"与"无符号"的哲学问题在这样的环境中从来没有出现过问题(UTF-8的编码器和解码器是你的事情吗?毕竟,只写很少;在应用程序上下文中,你只是使用std :: string作为各种各样的"黑盒子"! - ).