字符串转换为char32_t (unicode字符)
std::string conversion to char32_t (unicode characters)
我需要在c++中使用fstream
读取一个文件,该文件使用getline
函数具有ASCII
以及Unicode
字符。
但是该函数只使用std::string
,并且这些简单字符串的字符不能转换为char32_t
,因此我可以将它们与Unicode字符进行比较。所以谁能给点建议呢
char32_t对应于UTF-32编码,这种编码几乎从未被使用过(而且通常不受支持)。您确定文件是用UTF-32编码的吗?
如果您确定,那么您需要使用std::u32string
来存储您的字符串。对于阅读,您可以使用std::basic_stringstream<char32_t>
为例。但是,请注意,这些类型通常不受支持。
Unicode通常使用:
-
文本文件(和网页等)的UTF-8
-
程序中特定于平台的16位或32位编码,使用类型wchar_t
一般来说,通用编码的文件是UTF-8格式的。它们使用可变字节数来编码字符,从1(ASCII字符)到4。这意味着您不能使用std::string
直接测试单个字符。为此,您需要将UTF-8字符串转换为wchar_t
字符串,存储在std::wstring
中。
为此,使用如下定义的转换器:
std::wstring_convert<std::codecvt_utf8<wchar_t> > converter;
然后转换成
std::wstring unicodeString = converter.from_bytes(utf8String);
然后可以访问单个unicode字符。不要忘记在每个字符串字面值前加上一个"L",使其成为unicode字符串字面值。例如:
if(unicodeString[i]==L'仮')
{
info("this is some japanese character");
}
相关文章:
- 如何存储 unicode 字符并将其输出到文件?
- C++:打印 Unicode 字符
- 在 Windows 中使用 boost::p rogram_options 从命令行参数读取 Unicode 字符
- 获取Unicode字符C++的十进制值
- 用wchar_t处理 unicode 字符好吗?它不会引起任何问题吗?
- C++:如何将 unicode 字符打印到文本文件
- 动态计算 unicode 字符
- 如何将整数转换为 unicode 字符
- C++20 中的严格别名规则是否允许标准 c++ unicode 字符和下划线类型之间"reinterpret
- MessageBox打印来自TCHAR缓冲区的额外Unicode字符
- 如何将小数NCR转换为Unicode字符(C )
- SQLGetPrivateProfileString 错误地读取 Unicode 字符
- 将 Unicode 字符/字符串写入文件
- 将 Unicode 字符存储在.txt文件中的新行中
- 从终端 C++ 中的字符串中打印出 unicode 字符
- Unicode 字符分类与 boost::locale
- 字符数组中的滤波器unicode字符
- Unicode 字符问题/转换参数
- 从包含Unicode字符的文件中读取
- 从ASCII到Unicode字符代码的转换(FreeType2)