开发者

How to clear the buffer of a streamstring?

开发者 https://www.devze.com 2023-03-13 04:54 出处:网络
I have a streamstring in two loops and it is burning my RAM. So how to clear properly the buffer of a steamstring? It is like that to simplify :

I have a streamstring in two loops and it is burning my RAM. So how to clear properly the buffer of a steamstring? It is like that to simplify :

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

for()
{
    开发者_Python百科for()
    {
        val = 2;
        ss << 2;
        mystring = ss.str();
        // my stuff
    }
    // Clear the buffer here
}

It wrote 2 then 22 then 222... I tried .clear() or .flush() but it is not that. So how I do this?


The obvious solution is to use a new stringstream each time, e.g.:

for (...) {
    std::stringstream ss;
    for (...) {
        //  ...
    }
}

This is the way stringstream was designed to be used. (Also: do you really want a stringstream, or just an ostringstream?)


Set ss.str(""); when you want to clear out the excess characters (Edit: thank you).

Use .clear() if your stream has set any error flags in the process of the prior conversion.


If you use C++0x:

ss.swap(stringstream());

Visual Studio 2010 (SP1) supports it.

If you don't use C++0x:

ss.seekp(0);
ss.seekg(0);
ss.str("");
ss.clear();

It won't clear the memory, but you could use your stringstream object as it would be empty before.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号