0

私は次のコードを持っています:

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

どうすれば ostringstream を解放できますか?

4

4 に答える 4

4

ライフタイム管理の場合:

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);
于 2013-02-13T10:21:24.110 に答える
0

範囲外にしましょう:

int n=2;
string query;
{
    ostringstream convert;
    convert << n;
    query = convert.str();
}
于 2013-02-13T10:22:28.837 に答える
0

ストリームを解放する必要はありません。ストリームはスタック上にあるため、自動的に破棄されます。

于 2013-02-13T10:23:07.867 に答える
0

どうすれば ostringstream を解放できますか?

「無料」がインスタンスの「リソースの割り当てを解除する」ことを意味する場合は、範囲外にします。

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();
于 2013-02-13T10:38:00.027 に答える