我只想在C++中用文本文件写一些简单的行,但我希望它们用UTF-8编码.这样做的最简单方法是什么?
Ben*_*igt 55
UTF-8影响的唯一方法std::string是size(),length(),和所有的索引在字节,而不是字符测量.
并且,正如sbi所指出的那样,递增迭代器std::string将逐字节而不是按字符前进,因此它实际上可以指向多字节UTF-8代码点的中间位置.标准库中没有提供UTF-8感知迭代器,但在'Net上有一些可用.
如果你还记得的话,你可以把UTF-8放进去std::string,把它写成文件等等都是通常的方式(我指的是你在std::string没有UTF-8 的情况下使用的方式).
您可能希望使用字节顺序标记启动文件,以便其他程序知道它是UTF-8.
Jak*_*dle 10
这样做的最简单方法是什么?
在C++中最直观,最简单的utf8处理方式肯定是使用直接替换std::string.由于互联网仍然缺乏一个,我去自己实现功能:
tinyutf8(编辑:现在Github).
这个库提供了一个非常轻量级的插入式预置位std::string(或者std::u32string如果你愿意的话,因为你迭代代码点而不是char).Ity在快速访问和小内存消耗之间成功实现,同时非常强大.这种对"无效"UTF8序列的鲁棒性使其(几乎完全)与ANSI(0-255)兼容.
希望这可以帮助!
std::wstring text = L"??????";
QString qstr = QString::fromStdWString(text);
QByteArray byteArray(qstr.toUtf8());
std::string str_std( byteArray.constData(), byteArray.length());
Run Code Online (Sandbox Code Playgroud)