2012-04-25 11 views
0

ostreamから出力を読み取る方法は?

ostreamをとるパラメータストリームにストリングストリームを渡すことができます。その後、str()funktionによってstringstream内に設定されたテキストを取得できます。

#include <sstream> 

... 

{ 
stringstream ss; 
print(ss); 
string text; 
text = ss.str(); 
// Handle text 
} 

このような機能があります考える:

void print(ostream& stream) const; 

がどのように私はのostreamに書き込まれたデータにアクセスすることができますか?

私はそれを文字列として解釈を考えていた:

string text; 
print(text); 
// Interpret text 

理由は、パラメータとしてオブジェクトへのポインタを持っている別の関数があります次のとおりです。

void append(*Data data); 

そして、私が使用する必要があります。データオブジェクトはそのデータを取得するためのメソッドを出力します:

// This is a public function in the Data class 
void append(*Data data) { 
    string text; 
    data->print(text); 
    // append data to this Data object 
} 

私は文字列にキャストしようとしていましたそれはうまくいきませんでした。データをファイルに保存して回避策として読むことができたら、私は考えています。これに代えて

答えて

3

...

string text; 
print(text); 

...

ostringstream text; 
print(text); 

次にあなたが "テキスト" に書かれたテキストを使用することができます...これを試してみてください。

+0

ええと、エラーは発生しませんが、ostringstreamを文字列に変換するにはどうすればよいですか? <<演算子は機能しません。 ostringstreams strメンバーもgetやgetline()の組み合わせもありません。 – user1356190

+0

@ user1356190: 'str()'メンバ関数をどうやって使ってみましたか? ala 'std :: cout << text.str()<< '\ n';' –

+0

ああ、str()_function_を持っていたことに気付かなかった!リンク[リンク]を見てhttp://www.cplusplus.com/reference/iostream/ostream/それはどこにも言いません。とにかく、ostream用のパラメータとしてstringstreamを渡した後、 "text = ss.str()"という文字列に変換しました。それは完璧に動作します、ありがとう! – user1356190

関連する問題