2012-04-25 177 views
0

[SOLUTION]如何從ostream讀取輸出?

您可以將一個stringstream傳遞給需要一個ostream的參數。之後,您可以通過str()函數獲取在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 2012-04-25 16:24:32

+0

@ user1356190:你是如何試圖使用'str()'成員函數的?將工作ala'std :: cout << text.str()<<'\ n';' – 2012-04-26 02:22:48

+0

哦,我沒有意識到它有一個str()_function_!看鏈接[鏈接] http://www.cplusplus.com/reference/iostream/ostream/它沒有說任何地方。無論如何,我傳遞了一個stringstream作爲ostream的參數,然後我將它轉換爲一個帶有「text = ss.str()」的字符串。它完美的工作,謝謝你! – user1356190 2012-04-26 08:28:09