哪个更有效/更整洁:清除现有的字符串流还是创建新的字符串流?

Ada*_*all 5 c++ performance stringstream

出于好奇心的简单问题.

类上的多个方法需要使用字符串流,或者特别是ostringstream.

1)将一个stringstream变量作为类成员,然后在使用它之前清除它,即msg.str("")

2)每次需要使用时,在每个方法中本地创建一个新的stringstream变量.

在效率和整洁方面,哪种方法最好?

我的预感是选项1,但不确定初始构造是否与每次调用str()相结合会更糟?

PS我读过初始化..哪一个效率更高?这是更快/更有效?,我的下一步将是让我研究分析和编写一个小测试应用程序,但我觉得要求可能更快:-)

Jam*_*nze 7

不要stringstream用来开始.使用其中任何一个istringstreamostringstream适当的.并且只使用一次; 清除它是一项复杂的操作,需要几行代码,很容易忘记一些事情. msg.str("")没有开始解决所有的状态.您还需要重置格式标记,错误状态,异常掩码以及通过以下方式获取的变量中设置的任何其他格式设置信息xalloc.