簡體   English   中英

不能在 RapidJSON function 調用中使用 std::string 變量

[英]Cannot use std::string variable in RapidJSON function call

我是 C++ 的新手,遇到了問題。 我正在使用 rapidJSON 創建 JSON 文檔。

void setKeyValue() {
        Value obj(kObjectType);
        Value key("key");
        Value val(42);;
        obj.AddMember(key, val, d.GetAllocator());
    }

按預期工作。 但是當我嘗試替換對 key 的調用以使其使用傳入的參數時,如下所示:

void setKeyValue(string myKey) {
        Value obj(kObjectType);
        Value key(myKey);
        Value val(42);;
        obj.AddMember(key, val, d.GetAllocator());
    }

Value key(myKey)中的 myKey 在 Visual Studio 中得到一個紅色卷曲下划線,說明如下:

在此處輸入圖像描述

是什么原因造成的,我該如何解決?

默認情況下,您不會獲得對std::string的支持。 rapidJSON 要求你指定你想要的std::string支持。

#define RAPIDJSON_HAS_STDSTRING 1

只有這樣,您使用的這個構造函數才有效:

GenericValue (const std::basic_string< Ch > &s, Allocator &allocator)

您正在使用的 JSON 庫似乎不適用於標准庫中的字符串對象,但它適用於 const char*。

因此,您必須使用 c_str() 方法將字符串 object 轉換為 char*:

void setKeyValue(string myKey) {
        Value obj(kObjectType);
        Value key((char*)myKey.c_str());
        Value val(42);;
        obj.AddMember(key, val, d.GetAllocator());
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM