如何清除streamtring的缓冲区?

Naz*_*zka 4 c++ string buffer clear visual-studio

我有一个两个循环的流串,它正在烧我的RAM.那么如何正确清除steamstring的缓冲区呢?这就是简化:

stringstream ss (stringstream::in | stringstream::out);

for()
{
    for()
    {
        val = 2;
        ss << 2;
        mystring = ss.str();
        // my stuff
    }
    // Clear the buffer here
}
Run Code Online (Sandbox Code Playgroud)

它写了2然后22然后222 ...我试过.clear()或.flush()但它不是那样的.那我怎么做?

jon*_*sca 7

设置ss.str("");(:谢谢编辑)当您想清除掉多余的字符.

使用.clear()如果您的流已经在先前的转换过程中设置的任何错误标志.


Jam*_*nze 7

显而易见的解决方案是stringstream每次都使用新的,例如:

for (...) {
    std::stringstream ss;
    for (...) {
        //  ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这是stringstream设计使用的方式.(另外:你真的想要一个stringstream,或者只是一个ostringstream?)