我正在用 C++ 编写 JSON 解析器,在解析 JSON 字符串时遇到问题:
JSON 规范规定 JSON 字符串可以包含以下形式的 unicode 字符:
"here comes a unicode character: \u05d9 !"
我的 JSON 解析器尝试将 JSON 字符串映射到std::string
通常情况下,JSON 字符串的一个字符变成std::string
. 但是对于那些 unicode 字符,我真的不知道该怎么做:
我应该像这样将原始字节值放在我的std::string
位置:
std::string mystr;
mystr.push_back('\0x05');
mystr.push_back('\0xd9');
或者我应该用一个库来解释这两个字符,iconv
并将 UTF-8 编码的结果存储在我的字符串中?
我应该使用 astd::wstring
来存储所有字符吗?那么在 *NIX 操作系统上wchar_t
4 字节长的地方是什么?
我觉得我的解决方案有问题,但我不明白是什么。在那种情况下我该怎么办?