zoukankan      html  css  js  c++  java
  • Json CPP 中文支持与入门示例

    在每一个Json Cpp自带*.cpp文件头加上:

    #include "stdafx.h"

    将Json Cpp对自带的头文件的引用修改为单引号方式,例如json_reader.cpp原始代码为:

    1 #include <json/reader.h>
    2 #include <json/value.h>
    3 #include <utility>
    4 #include <cstdio>
    5 #include <cassert>
    6 #include <cstring>
    7 #include <iostream>
    8 #include <stdexcept>

    修改后(注意我引用路径的不同):

    1 #include "stdafx.h"
    2 #include "reader.h"
    3 #include "value.h"
    4 #include <utility>
    5 #include <cstdio>
    6 #include <cassert>
    7 #include <cstring>
    8 #include <iostream>
    9 #include <stdexcept>

    定位到json_reader.cpp第87行,将代码修改为如下:

    else if (cp <= 0xFFFF) 
    {
        // add by sam BEGIN
        if((cp>=0x4E00 && cp<=0x9FA5)||(cp>0x9F00 && cp<0xFA2D))
        {
            wchar_t src[2]={0};
            char dest[5]={0};
            src[0]=static_cast<wchar_t>(cp);
            std::string curLocale=setlocale(LC_ALL,NULL);
            setlocale(LC_ALL,"chs");
            wcstombs_s(NULL,dest,5,src,2);
            result = dest;
            setlocale(LC_ALL,curLocale.c_str());
        }
        else
        {
            result.resize(3);
            result[2] = static_cast<char>(0x80 | (0x3f & cp));
            result[1] = 0x80 | static_cast<char>((0x3f & (cp >> 6)));
            result[0] = 0xE0 | static_cast<char>((0xf & (cp >> 12)));
        }
        // add by sam END
    }

    使用JsonCpp例子:

    JSON代码如下

    1 {
    2     "function":"add",
    3     "host":"localhost",
    4     "port":8080,
    5     "method":"doUserAdd",
    6     "varname":"UserName"
    7     "varvalue":"麦兜"
    8 }

    C++代码如下

     1 #include <string>
     2 #include "Json.h"
     3 ...
     4 using namespace std;
     5 ...
     6 string strHost     = root["host"].asString();
     7 int strPort        = root["port"].asInt();
     8 string strMethod   = root["method"].asString();
     9 string strFunc     = root["function"].asString();
    10 string strVarName  = root["varname"].asString();
    11 string strVarValue = root["varvalue"].asString();
  • 相关阅读:
    js转化 保留2位小数
    python练习:打印九九乘法表
    PyCharm常用快捷键及工具
    python关键字
    Python学习资源
    Jira项目导入,被导入项目与目的系统数据类型不一致导入不成功的解决方案
    压测的时候到底要不要加集合点?
    Java Vuser协议JDBC脚本编写(MySQL)
    eclipse工具使用
    oracle忘记sys,system密码的解决方法
  • 原文地址:https://www.cnblogs.com/sam-snow-v/p/5909762.html
Copyright © 2011-2022 走看看