bada C++ std::字符串流

发布于 2025-01-06 07:07:37 字数 584 浏览 2 评论 0原文

bada 在读取 stringstream 时崩溃。

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

我该如何解决它?
谁有想法或有相同的经历?

bada crashed on stringstream read.

json::Object objDocument = d();
std::stringstream stream;
json::Writer::Write(objDocument, stream);
json::Object objDocument2;
json::Reader::Read(objDocument2, stream); // <=== crash

or like this:

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

How can I solve it?
Who had ideas or same experience?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

樱娆 2025-01-13 07:07:37

字符串 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...

The string stream.str() is a temporary which is destroyed right after you use it to get c_str() after which the pointer is no longer valid.

If you save a reference in a temporary the string will stick around:

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...
梦萦几度 2025-01-13 07:07:37

第一个问题可能是寻道问题。写入后,stringstream 中的当前位置位于末尾,但您想从头开始读取。

The first problem is probably a seek issue. After the write, the current position in the stringstream is at the end, but you want to read from the start.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文