2012-02-16 8 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

1

最初の問題は、おそらく求める問題です。書き込み後、stringstreamの現在の位置は最後ですが、最初から読み込みたいとします。

関連する問題