bada C++std::字符串流

bada C++ std::stringstream

本文关键字:字符串 bada C++std      更新时间:2023-10-16

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中的当前位置在末尾,但您希望从头开始读取。