如何将C ++中char指针内的数据分配给JSONCPP

时间:2014-04-10 09:49:44

标签: c++ arrays json char

我有一个大字符数组。可以说它包含4500个字节。

案例#1:

如果我写下面的代码,则不会显示完整的值

cout << filecontent << endl;

案例#2:

在这种情况下,它工作得很好。

for(int i=0; i <= size; i++) 
            cout << filecontent[i];

我的问题是我想将值分配给Json::Value。如果我进行正常的赋值操作,它只需要垃圾值。

为什么会这样?

据我所知,只要实际数据包含\0,它就会视为值的结尾。

如何克服这个问题?

2 个答案:

答案 0 :(得分:1)

您可以通过传入显式长度来创建带有NULL的std :: string。

如果您使用JsonCPP,这对您没有帮助,因为即使您传入char*,内部存储std::string,因此会丢失长度并终止于第一个NULL。它也没有将NULL作为控制字符处理,因此只需将NULL(而不是\ u0000)放入JSON中。

我认为你需要找到一个不同的JSON库来做你想做的事情。我唯一想到的另一个选择是为您的数据生成带有替换的模板JSON,然后在生成后进行自己的替换和转义。当然,如果您愿意,也可以解决问题并提交补丁。

答案 1 :(得分:0)

使用写。如:

cout.write( filecontent, size );

如果您需要字符串,请使用字符串流:

stringstream strstr;
strstr.write( filecontent, size );
string ss = strstr.str();

需要标题<sstream>