使用unicode字符串作为std :: vector <unsigned short =“”> </unsigned>

时间:2011-11-01 15:35:28

标签: c++

库将unicode字符串存储为。

std::vector<unsigned short> ustring;

如何以便携方式进行这些转换?

convert ustring to std::wstring;
convert ustring to std::string;
convert ustring to std::vector<unsigned char>;
convert std::vector<unsigned char> to ustring;


编辑
字符串可能是UTF-16而不是UTF-8

2 个答案:

答案 0 :(得分:2)

libiconvicuUTF8-CPP和其他人可以做到这一点。 AFAIK,C ++没有可移植的方式在UTF8 / 16/32之间进行转换。请记住,std::wstring在某些系统上是UTF16,在其他系统上是UTF32。

答案 1 :(得分:0)

  • 转换为广泛字符串:使用iconv()

  • UTF8 / 16/32之间的转换:现在是C ++ 11的内置功能,但还没有广泛支持。或者,使用iconv()。还可以使用std::u16stringstd::u32string作为选择的数据类型(对于UTF8也是std::string)。

  • 从宽字符串转换为系统的多字节窄字符串:使用wcstombs() / mbstowcs()

以下是我对该主题过去帖子的标准回复:Q1Q2Q3