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

时间:2012-01-06 10:27:20

标签: c++ performance stringstream

简单的问题只是出于好奇。

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

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

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

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

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

P.S。我已阅读Initializing.. which one is more efficient?Which is quicker/more efficient?,我的下一步将是让我查看分析并编写一个小型测试应用,但我觉得可能会更快: - )

1 个答案:

答案 0 :(得分:7)

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