需要做一個從Json獲取檔案路徑的決議代碼,嘗試用cJson過,但由于cJson是string的形式,而我需要輸出char和LPWSTR形式的,所以用不了.
先簡化問題.
一個json格式如下:
{
"name": "testtext"
}
這是最簡形式的json.
它儲存在C:\\test\\manifest.json里.
目前已經實作讀取json的內容,并且轉化為char* buffer
接下來如何決議這一個檔案呢?
就是要求讀取"name"這個資料,那么就用char輸出testtext這個文本,如上檔案所示.
uj5u.com熱心網友回復:
用第三方庫決議吧,就算是string,也可以輕松轉化成char*,不然你自己實作代價就太大了uj5u.com熱心網友回復:
std:string怎么轉換成char* ?uj5u.com熱心網友回復:
string.data()
uj5u.com熱心網友回復:
std:string怎么轉換成char* ? 用第三方庫決議吧,就算是string,也可以輕松轉化成char*,不然你自己實作代價就太大了
string.data()
string.c_str()
uj5u.com熱心網友回復:
如果json的形式簡單,可以用sscanf或正則來提取如果復雜,那還是建議用第三方類別庫
string轉char*
string s = "abc";
char *p = s.c_str();
char*轉string,直接=即可
char *p = "abc";
string s = p;
uj5u.com熱心網友回復:
如果json的形式簡單,可以用sscanf或正則來提取
如果復雜,那還是建議用第三方類別庫
string轉char*
string s = "abc";
char *p = s.c_str();
char*轉string,直接=即可
char *p = "abc";
string s = p;
我用的cjson是std::string
可以轉換嗎
uj5u.com熱心網友回復:
直接用jsoncpp好了uj5u.com熱心網友回復:
我用的cjson是std::string
可以轉換嗎
說的就是std::string
給你個簡單例子吧
int main() {
std::string str = "abcd";
char *chs = new char[str.size()+1];
strcpy(chs, str.c_str()); //拷貝的方式,和str指向不同的記憶體
printf("chs=%s\n", chs);
delete[] chs;
char *p = const_cast <char*>(str.c_str()); //直接賦值的方式,和str指向相同的記憶體
printf("p=%s\n", p);
p[0] = 'k'; //改變p的資訊也會改變str的資訊
printf("p=%s\n", p); //
printf("str=%s\n", str.c_str());
return 0;
}
uj5u.com熱心網友回復:
我用的cjson是std::string
可以轉換嗎
說的就是std::string
給你個簡單例子吧
int main() {
std::string str = "abcd";
char *chs = new char[str.size()+1];
strcpy(chs, str.c_str()); //拷貝的方式,和str指向不同的記憶體
printf("chs=%s\n", chs);
delete[] chs;
char *p = const_cast <char*>(str.c_str()); //直接賦值的方式,和str指向相同的記憶體
printf("p=%s\n", p);
p[0] = 'k'; //改變p的資訊也會改變str的資訊
printf("p=%s\n", p); //
printf("str=%s\n", str.c_str());
return 0;
}
uj5u.com熱心網友回復:
需要用對話框展示json內容uj5u.com熱心網友回復:
cJSON可以用,字串編碼轉換使用 MultiByteToWideChar 以及 WideCharToMultiByteuj5u.com熱心網友回復:
有專門的決議josn的庫也用win版本的還是很好用的uj5u.com熱心網友回復:
boost::property_tree::ptree轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/17616.html
標籤:C++ 語言
上一篇:一道指標問題
