Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将无符号字符*转换为json,jsonspp C++;_C++_Json_C++11_Jsoncpp - Fatal编程技术网

C++ 将无符号字符*转换为json,jsonspp C++;

C++ 将无符号字符*转换为json,jsonspp C++;,c++,json,c++11,jsoncpp,C++,Json,C++11,Jsoncpp,我有一个未签名的字符数组保存数据,我想把它存储到一个Json对象中。怎样才能做到呢?使用jsoncpp和C++11。 声明 rootL1["CurrentValue"] = userInfo->hashCred; 不起作用,反过来它在json中存储为bool,而不是未签名的数据。如果您可以查看jsoncpp类的文档(我假设rootL1属于这种类型,而operator[]返回相同的类型),您将看到没有接受您的userInfo->hashCred数组的unsigned char*转换构造函数

我有一个未签名的字符数组保存数据,我想把它存储到一个Json对象中。怎样才能做到呢?使用jsoncpp和C++11。 声明

rootL1["CurrentValue"] = userInfo->hashCred;

不起作用,反过来它在json中存储为bool,而不是未签名的数据。

如果您可以查看jsoncpp类的文档(我假设
rootL1
属于这种类型,而
operator[]
返回相同的类型),您将看到没有接受您的
userInfo->hashCred
数组的
unsigned char*
转换构造函数。有一个构造函数接受
const char*
,但没有从
unsigned char*
const char*
的隐式转换,最接近的一个是指向布尔的指针的隐式转换,这是在您的案例中选择的

解决方案应该是使用接受
const char*
的转换构造函数。首先,您应该想想为什么需要
无符号字符*
,也许您可以使用
字符类型的数组?如果不能,则可以尝试将
无符号字符*
转换为
字符*

rootL1["CurrentValue"] = reinterpret_cast<char *>(userInfo->hashCred)
rootL1[“CurrentValue”]=reinterpret\u cast(userInfo->hashCred)
但是,这可能会导致各种各样的问题,这取决于您在阵列中实际存储的内容,以及jsoncpp在使用这些数据的情况下所做的工作

我建议您将hashCred视为二进制数据,并将其编码为
char
array。然后将其存储在jsoncpp值中。有关详细信息,请参阅此处:


在中,您还可以找到一些如何将二进制数据存储为值的示例。

一种方法是将数据转换为json数组,反之亦然