2013-02-13 52 views
0

我有以下代碼:我如何免費ostringstream?

int n=2; 
ostringstream convert; // stream used for the conversion 
convert << n; 
string query= convert.str(); 

我怎麼能免費ostringstream?

+0

走出去的範圍 – StoryTeller 2013-02-13 10:21:20

+0

的菌種問題http://stackoverflow.com/questions/5288036/how-to-? clear-ostringstream? – bystander 2013-02-13 10:23:28

+0

@bystander:那個奇怪的問號是什麼?你在進行同形異義詞攻擊嗎? – 2013-02-13 10:39:58

回答

3

隨着生命週期管理:

std::string query; 
int n = 2; 

{ 
    std::ostringstream oss; 
    oss << n; 
    query = oss.str(); 
} 

短,但有點更難閱讀:

int n = 2; 
std::string query 
      = static_cast<std::ostringstream &>(std::ostringstream() << n).str(); 

可能更好,根據您的情況:

auto query = std::to_string(2); 
+0

它工作正常。日Thnx。 – user2036891 2013-02-13 10:38:12

0

隨它去吧超出範圍:

int n=2; 
string query; 
{ 
    ostringstream convert; 
    convert << n; 
    query = convert.str(); 
} 
0

你不需要釋放流。該流在堆棧上,所以它會自動銷燬。

0

我該如何釋放ostringstream?

如果用「free」表示實例的「釋放資源」,那麼讓它超出範圍。

int n=2; 
string query; 
{ 
    ostringstream convert; // stream used for the conversion 
    convert << n; 
    qyuery = convert.str(); 
} 

如果你的意思是 「清除內容」,那麼你可以使用:

int n=2; 
ostringstream convert; // stream used for the conversion 
convert << n; 
string query1 = convert.str(); 
// clear the contents & reset error bits (thanks @PeterWood) 
convert.str(""); 
convert.clear(); 
convert << n + 1; 
string query2 = convert.str(); 
+0

不要忘記重置任何錯誤位。 – 2013-02-13 10:39:52