Qt5プロジェクトでPresageテキスト予測プラットフォームを使用しようとしていますが、std :: stringが壊れてエラーが発生し続けます。Qt5でstd :: stringの値が壊れる
私は、このクラスの予測システムのための文字列のコンテキストを提供している:
class SomeClass : public ParentClass
{
public:
SomeClass(const std::string& _past_context) : past_context(_past_context) { }
std::string get_past_stream() const {
return past_context;
}
std::string get_future_stream() const { return empty; }
private:
const std::string& past_context;
const std::string empty;
};
このコンテキストは、このようなプレサージュコード内で呼ばれている:私はget_past_stream
内std::out
にpast_context
を送信する場合
std::string ContextTracker::getToken(const int index) const
{
std::stringstream pastStringStream(context_tracker_callback->get_past_stream());
...
}
メソッドでは、正しい文字列が表示されます。 getToken
メソッドでget_past_stream
の結果を送信すると、データが破損します。
UPDATE [2016年7月28日]:
は質問を明確にし、重複したタグを削除するには:Qt5を使用している場合、問題にのみ発生します。 g++
でコンパイルすると、SomeClass
とPresageコンテキスト呼び出し側のみで構成されるテストケースが正常に動作します。 Qt5でSTLを使用すると、文字列が戻り値として使用された後に破損することがあります。
問題についていくつかの説明を追加しました。私は私の答えに新しいコメントを加えました。 – adapar