我有一个大字符数组。可以说它包含4500个字节。
案例#1:
如果我写下面的代码,则不会显示完整的值
cout << filecontent << endl;
案例#2:
在这种情况下,它工作得很好。
for(int i=0; i <= size; i++)
cout << filecontent[i];
我的问题是我想将值分配给Json::Value
。如果我进行正常的赋值操作,它只需要垃圾值。
为什么会这样?
据我所知,只要实际数据包含\0
,它就会视为值的结尾。
如何克服这个问题?
答案 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>