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 回答