你如何清除一个stringstreamvariables?
我已经尝试了几件事情,
std::stringstream m; m.empty(); m.clear(); 两者都不起作用。
 对于所有的标准库types,成员函数empty()是一个查询,而不是一个命令,即它意味着“你是空的吗? 不是“请扔掉你的内容”。 
  clear()成员函数从iosinheritance,用于清除stream的错误状态,例如,如果文件stream的错误状态设置为eofbit (文件结束),则调用clear()将设置错误状态回到goodbit (没有错误)。 
 清除stringstream的内容,使用: 
 m.str(""); 
是正确的,虽然使用:
 m.str(std::string()); 
 在技术上更高效,因为你避免了调用const char*的std::string构造const char* 。 但是现在任何编译器都应该能够在这两种情况下生成相同的代码 – 所以我只会去更可读的东西。 
 m.str(""); 
似乎工作。
无论编译器如何,这应该是最可靠的方法:
 m=std::stringstream(); 
您可以清除错误状态并在一行中清空strignstream
 std::stringstream().swap(m); // swap m with a default constructed stringstream 
这有效地将m重置为默认的构造状态
我总是在研究它:
 { std::stringstream ss; ss << "what"; } { std::stringstream ss; ss << "the"; } { std::stringstream ss; ss << "heck"; } 
我的2美分:
这似乎在xcode和dev-c ++中适用于我,我有一个菜单forms的程序,如果按照用户的请求迭代执行,将会填满一个streamtringvariables,在第一次代码会运行但不会清除下一次用户将运行相同的代码的stringstream。 但是下面的两行代码最终在填充stringvariables之前每次清除了stringstreamvariables。 (2小时的反复试验和谷歌search),顺便说一句,使用每一行自己不会做的伎俩。
 //clear the stringstream variable sstm.str(""); sstm.clear(); //fill up the streamstream variable sstm << "crap" << "morecrap"; 
这是一个概念问题。
Stringstream是一个stream,所以它的迭代器是前向的,不能返回。 在输出串stream中,您需要一个flush()来重新初始化它,就像在其他输出stream中一样。
这些不会放弃gnu c ++中的stringstream中的数据
  m.str(""); m.str() = ""; m.str(std::string()); 
以下为我清空stringstream:
  m.str().clear();