2012-02-16 67 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中的當前位置即將結束,但您想從頭開始閱讀。