Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何清除streamstring的缓冲区?_C++_String_Visual Studio_Buffer - Fatal编程技术网

C++ 如何清除streamstring的缓冲区?

C++ 如何清除streamstring的缓冲区?,c++,string,visual-studio,buffer,C++,String,Visual Studio,Buffer,我有一个两圈的流线,它烧坏了我的内存。那么,如何正确地清除蒸汽字符串的缓冲区呢?这就像是简化: stringstream ss (stringstream::in | stringstream::out); for() { for() { val = 2; ss << 2; mystring = ss.str(); // my stuff } // Clear the buffer he

我有一个两圈的流线,它烧坏了我的内存。那么,如何正确地清除蒸汽字符串的缓冲区呢?这就像是简化:

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

for()
{
    for()
    {
        val = 2;
        ss << 2;
        mystring = ss.str();
        // my stuff
    }
    // Clear the buffer here
}
stringstream-ss(stringstream::in | stringstream::out);
for()
{
for()
{
val=2;
当你想清除多余的字符时,设置
ss.str(“”;
)(编辑:谢谢)


如果流在先前转换过程中设置了任何错误标志,请使用
.clear()

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

for (...) {
    std::stringstream ss;
    for (...) {
        //  ...
    }
}
这就是
stringstream
的设计使用方式。(还有:你知道吗 如果您使用C++0x,您真的想要一个
stringstream
,或者只是一个
ostringstream
?)

ss.swap(stringstream());
ss.seekp(0);
ss.seekg(0);
ss.str("");
ss.clear();
(SP1)支持它

如果不使用C++0x:

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

它不会清除内存,但您可以使用
stringstream
对象,因为它以前是空的。

我会将stringstream放入循环中。如果我将std::stringstream ss;放入一个循环中,它会在RAM中创建许多ss,并将其烧掉。否?或者它会在循环结束时删除ss,因为它是在循环中创建的?(我觉得这是一个没有问题的问题:)但我是!)它是在程序循环时创建和销毁的。顺便说一句,你说的“烧掉内存”是什么意思?我的应用程序以2Go速度在30秒内增长并崩溃。“它是在程序循环时创建和销毁的”我不知道,我以为它会创建很多ss,它们会在函数/app/object的末尾销毁。谢谢,我在这里用它来更改字符串中的一个浮点数,然后把这个字符串放到另一个大字符串中。这样做最好的方法是什么?如果我把std::stringstream ss;放在一个循环中,它会在RAM中创建很多ss no?
std::ostringstream ss;ss这通常是不够的。你也应该使用
seekp(0)
seekg(0)
。@Naszta在设置字符串并清除流之后,我可以不用
seekp/seekg
部分来完成它。@jonsca:在这种情况下,这取决于实现。我以前有很多问题。(我开发了多平台,我不记得哪个实现有这个问题)。为了将来的参考,这是在Scott Meyers的C++书籍中(我推荐)。