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

Mus*_*ful 1 c++ stringstream c++11

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

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


背景:我将一些数据编码到ss,并希望在将CRC写入磁盘文件之前附加CRC.它是用于计算我想要迭代的CRC ss.道德要做的事情可能是在运行中继承stringstream和维护CRC,但这对于我的直接目的来说感觉太麻烦了.

Sam*_*hik 5

A std::stringstream使用a std::stringbuf作为其流缓冲区.A std::stringbuf是可搜索的,就像普通文件一样.

您可以根据心脏的需要迭代缓冲的字符串,然后寻找缓冲区的开头或字符串中的其他位置,并将时钟倒回原处.