可以在不改变状态的情况下迭代stringstream中的字符吗?

时间:2016-11-12 15:48:58

标签: c++ c++11 stringstream

给定stringstream ss,是否有一种巧妙的方法来迭代当前的字符,而不改变其状态?

当然,我可以stringstream ss2(ss.str())然后吃掉ss2中的字符,但我希望有一种方法可以避免创建那个中间字符串,因为我的ss可能包含数百万个字符。

背景:我将一些数据编码为ss,并希望在将CRC写入磁盘文件之前附加CRC。它用于计算我想要遍历ss的CRC。道德要做的可能是继承stringstream并保持CRC的速度,但这对于我的直接目的来说感觉太麻烦了。

1 个答案:

答案 0 :(得分:5)

std::stringstream使用std::stringbuf作为其流缓冲区。 std::stringbuf可以搜索,就像普通文件一样。

您可以根据心脏的需要迭代缓冲的字符串,然后回到缓冲区的开头,或者回到字符串中的其他位置,然后将时钟倒回到原来的位置。