使用 json c++ 的输出在字段中获取奇怪的字符

Getting strange characters in fields with output from json c++

我正在使用从 .get(movie) 函数接收到的 json 值来获取 json 电影对象中每个键的值。我试图将它输出到 fltk GUI 中的字段中,它需要是 const char * 类型。但是,我得到的是奇怪的字符而不是我的值。这里有明显的问题吗?

 Json::Value result = m.get(movie);
 std::cout << result << endl;
 const char *released = result.get("Released", "NULL").asCString();
 releasedInput->value(released);
 const char *rated = result.get("Rated", "NULL").asCString();
 ratedInput->value(rated);
 Json::Value actors = result.operator[]("Actors");
 const char *plot = result.get("Plot", "NULL").asCString();
 plotMLIn->value(plot);
 const char *runtime = result.get("Runtime", "NULL").asCString();
 runtimeInput->value(runtime);
 Json::Value genre = result.operator[]("Genre");
 const char *filename = result.get("Filename", "NULL").asCString();
 filenameInput->value(filename);
 const char *title = result.get("Title", "NULL").asCString();
 titleInput->value(title)

我只粘贴了函数中的相关行。如果需要更多说明,我很乐意提供。

我明白了。我只需要更改 .asCString();到 asString().c_str();

我确信还有更多 eloquent 方法可以做到这一点,但正如我所说,我是新手。

您应该将结果保存在 std::string 中,然后对该字符串调用 c_str() 以获得 C 字符串。如果您链接这些调用并立即保存指针或仅执行 asCString() 保存 C 字符串指向的内存的字符串对象将被清除,您将在代码中调用未定义的行为,这不是您想要的.

I.E

std::string runtime = result.get("Runtime", "NULL").asString();
runtimeInput->value(runtime.c_str());