bada C++std::字符串流
bada C++ std::stringstream
bada在字符串流读取时崩溃。
json::Object objDocument = d();
std::stringstream stream;
json::Writer::Write(objDocument, stream);
json::Object objDocument2;
json::Reader::Read(objDocument2, stream); // <=== crash
或者像这样:
std::string *requestString = new std::string(data);
AppLog(requestString->c_str()); // <=== contains correct data
std::stringstream stream;
stream << *requestString;
const char *ddd = stream.str().c_str();
AppLog(ddd); // <==== contains random data
我该如何解决
谁有同样的想法或经历?
字符串stream.str()
是一个临时字符串,它在您使用它获取c_str()
之后立即被销毁,之后指针不再有效。
如果您将引用保存在临时文件中,字符串将一直保留:
std::string ddd_str = stream.str();
const char *ddd = ddd_str.c_str();
// ddd_str is still in scope and so ddd is still valid...
第一个问题可能是查找问题。写入后,stringstream
中的当前位置在末尾,但您希望从头开始读取。