2012-02-16 40 views
1

bada在stringstream上崩溃读取。bada C++ std :: 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 

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

回答

2

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

它的工作原理。谢谢。 – DmitryR 2012-02-16 08:15:17

1

的第一个问题可能是一个寻求问题。写完之后,stringstream中的当前位置即将结束,但您想从头开始阅读。