将 unicode 字符串作为 std::vector<unsigned short>
Working with unicode strings as std::vector<unsigned short>
标准库将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
libiconv、icu、UTF8-CPP等都可以这样做。据我所知,c++没有一种可移植的方式在UTF8/16/32之间进行转换。请记住,std::wstring
在某些系统上是UTF16,而在其他系统上是UTF32。
-
转换为宽字符串:使用
iconv()
-
UTF8/16/32之间的转换:现在是c++ 11的内置功能,但尚未得到广泛支持。或者使用"
iconv()
"。也可以使用std::u16string
和std::u32string
作为选择的数据类型(std::string
用于UTF8)。 -
从宽字符串到系统多字节窄字符串的转换:使用
wcstombs()
/mbstowcs()
。
这是我对过去关于这个主题的帖子的标准回应:Q1, Q2, Q3。
相关文章:
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- C++ - Unicode Newline
- 如何将unicode字符串从C++传递到delphi
- <Windows>为什么 std::thread::native_handle 返回类型为"long long unsigned int"的值,而不是 void*(又名 HANDLE)?
- ascii 和 unicode 在处理级别有什么区别吗?
- 无法从 std::string 中提取C++ Unicode 符号
- 错误:隐式转换更改符号:'int'到'unsigned long'
- 如何使用多次 memcpy 转换回 std::vector<unsigned char>?
- MinGW64 - Unicode 源文件错误?
- 使用 Visual Studio 2019 编译 Unicode
- 将ANSI C字符串转换为UNICODE
- 如何从 oracle 数据库 c++ 读取 unicode
- 在特定 Unicode 路径中创建文件
- 如何存储 unicode 字符并将其输出到文件?
- C++ wmain 函数错误时使用 Unicode
- C++:打印 Unicode 字符
- QTextStream,用于打印英语和Unicode 16
- 定义 uint= "unsigned int" 没有像我在 Visual Studio 中使用 nvcc 时预期的那样应用
- 将 unicode 字符串作为 std::vector<unsigned short>