我已经尝试了好几种方法,
std::stringstream m;
m.empty();
m.clear();
这两种方法都行不通。
我已经尝试了好几种方法,
std::stringstream m;
m.empty();
m.clear();
这两种方法都行不通。
当前回答
这应该是最可靠的方式,不管编译器:
m=std::stringstream();
其他回答
这应该是最可靠的方式,不管编译器:
m=std::stringstream();
对于所有标准库类型,成员函数empty()是一个查询,而不是一个命令,也就是说,它的意思是“你是空的吗?”而不是“请扔掉你的内容”。
clear()成员函数继承自ios,用于清除流的错误状态,例如,如果一个文件流的错误状态设置为eofbit(文件结束),那么调用clear()将错误状态设置为goodbit(无错误)。
要清除stringstream的内容,使用:
m.str("");
是正确的,尽管使用:
m.str(std::string());
技术上更有效,因为您避免调用std::string构造函数,该构造函数接受const char*。但是现在任何编译器都应该能够在这两种情况下生成相同的代码——所以我只会选择可读性更好的。
我一直在定义它的范围:
{
std::stringstream ss;
ss << "what";
}
{
std::stringstream ss;
ss << "the";
}
{
std::stringstream ss;
ss << "heck";
}
m.str("");
似乎有用。
在gnu c++中,这些函数不会丢弃stringstream中的数据
m.str("");
m.str() = "";
m.str(std::string());
以下为我清空stringstream:
m.str().clear();