为什么不用 operator= for Json::Value?
Why don't operator= for Json::Value?
示例:
std::string strJson = R"({"foo": "bar"})";
Json::Value root = strJson; // if it implement operator=(std::string&)
改为
std::string strJson = R"({"foo": "bar"})";
Json::CharReaderBuilder builder;
Json::CharReader* reader = builder.newCharReader();
Json::Value json;
std::string errors;
bool parsingSuccessful = reader->parse(
strJson.c_str(),
strJson.c_str() + strJson.size(),
&json,
&errors
);
delete reader;
我觉得前者比后者方便多了。
为什么 Json::Value 不用 operator=?
您可以使用 std::istream& operator>>(std::istream&, Value&)
:
Json::Value root;
std::stringstream(R"({"foo": "bar"})") >> root;
构造函数采用 std::string
是构建一个包含字符串值的值(因此 isString()
将 return true
)。
示例:
std::string strJson = R"({"foo": "bar"})";
Json::Value root = strJson; // if it implement operator=(std::string&)
改为
std::string strJson = R"({"foo": "bar"})";
Json::CharReaderBuilder builder;
Json::CharReader* reader = builder.newCharReader();
Json::Value json;
std::string errors;
bool parsingSuccessful = reader->parse(
strJson.c_str(),
strJson.c_str() + strJson.size(),
&json,
&errors
);
delete reader;
我觉得前者比后者方便多了。
为什么 Json::Value 不用 operator=?
您可以使用 std::istream& operator>>(std::istream&, Value&)
:
Json::Value root;
std::stringstream(R"({"foo": "bar"})") >> root;
构造函数采用 std::string
是构建一个包含字符串值的值(因此 isString()
将 return true
)。