和我搜索过的很多案例有点不一样。
我收到如下字符串:
std::string str = "\\u8f93\\u5165\\u7684";
如何解析转义序列以构建实际的 UTF-8 字符串?
最佳答案
这是一个简单的解析和转换工作,例如可以这样完成:
#include <iostream>
#include <string>
#include <codecvt>
#include <boost/spirit/include/qi.hpp>
namespace qi = boost::spirit::qi;
int main()
{
std::string str = "\\u8f93\\u5165\\u7684";
std::u16string u16;
qi::parse(str.begin(), str.end(), *("\\u" >> qi::hex), u16);
std::string u8 = std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t>().to_bytes(u16);
std::cout << "utf 8 string " << u8 << " consiting of " << u8.size() << " bytes\n";
}
住在 coliru http://coliru.stacked-crooked.com/a/62efb680a3d27a60
关于c++ - 如何在 C++ 中取消转义 UTF-8 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31983934/