2010-08-18 147 views
49

我對C++ STL非常陌生,所以這可能是微不足道的。我有一個ostream變量,其中包含一些文本。將ostream轉換爲標準字符串

ostream* pout; 
(*pout) << "Some Text"; 

有沒有辦法提取流並將其存儲在類型爲char*的字符串中?

回答

47
 std::ostringstream stream; 
    stream << "Some Text"; 
    std::string str = stream.str(); 
    const char* chr = str.c_str(); 

我解釋一下這是怎麼回事在回答這個question,這是我寫的不是一小時前。

+0

我收到以下錯誤信息: 「結構的std :: basic_ostream <字符,的std :: char_traits >'沒有任何成員名爲'str' – 2010-08-18 14:44:25

+7

包括必要的標題.'#包含'和'#包括' – 2010-08-18 14:46:05

+8

它不是ostream。這是ostringstream – Vanuan 2012-03-13 14:22:39

3

嘗試std::ostringstream

std::ostringstream os; 
    os<<"Hello world"; 
    std::string s=os.str(); 
    const char *p = s.c_str(); 
116

的問題是在ostream串,ostringstream字符串。

對於那些有興趣在具有實際問題的回答(具體以ostream),試試這個:

void someFunc(std::ostream out) 
{ 
    std::stringstream ss; 
    ss << out.rdbuf(); 
    std::string myString = ss.str(); 
} 
+2

我會給你點熱點。好的..和正確的答案,嘿。 – moodboom 2013-11-22 18:16:13

+18

這是正確的答案。上面的答案標記爲正確的,並不回答這個問題。 – 2014-06-19 20:48:50