1

可能重复:
如何清除字符串流?

我有这个 c++ 命令

//siteurl and filename are of string type


stringstream ss;
ss << "lynx -dump '" << siteurl << "' > " << filename;

在第一个循环中,一切正常。但是在第二个循环中,我意识到它只是追加而不是创建新记录

当我使用 cout 进行故障排除时,它给了我这个,我意识到命令是在第二个循环上追加而不是覆盖,我如何在第二个循环/使用中为空或重置或覆盖 ss(字符串流)的第一条记录。

Webparser: lynx -dump 'http://sg.finance.yahoo.com/q?s=USDSGD=X' > file.txtlynx -dump 'http://sg.finance.yahoo.com/q?s=EURUSD=X' > file.txt

我想要的是第二个循环,它将是这个输出

Webparser: lynx -dump 'http://sg.finance.yahoo.com/q?s=EURUSD=X' > file.txt

我是 C++ 新手,感谢所有帮助,非常感谢。

4

1 回答 1

3

做空ss.str("")

但最好ss在循环内部定义,这样每次都是一个新变量:

for(/*.....*/)
{
   stringstream ss;
   ss << /*....*/ ;
}

也就是说,使它成为一个作用域变量,例如函数作用域或块作用域,这样当它超出作用域时就会被破坏,当它回来时,它会再次被创建。

ss.str("")使其成为范围变量比使用使其为空更不容易出错。我的意思是,如果你忘记了怎么办ss.str("")?在很多情况下,当你需要写的时候ss.str("")表明你确实需要把它变成一个作用域变量,这样你就可以再次定义它,或者在一个循环中(如上所示),或者完全是一个新的变量,可能有不同的名字.

于 2012-07-29T13:50:27.950 回答