0

我正在将一些数据放入从 stringstream 获得的流 buf

std::stringstream data;
auto buf = data.rdbuf();
buf->sputn(XXX);

我想要的是能够将一些虚拟数据放入这个缓冲区,然后在以后,一旦我有正确的数据,替换虚拟数据。

这些线上的东西:

auto count = 0;
buf->sputn((unsigned char *)&count, sizeof(count));
for (/*some condition*/)
{
   // Put more data into buffer

   // Keep incrementing count
}

// Put real count at the correct location

我尝试使用 pubseekpos + sputn,但它似乎没有按预期工作。任何想法可能是正确的方法吗?

4

2 回答 2

3

只需使用data.seekp(pos);then data.write()- 您根本不需要使用缓冲区。

于 2014-08-12T06:02:51.533 回答
0

这可能会帮助您入门,它会写入一些X's 并将它们打印回来,这也可以通过以下方式完成data << 'X'

#include <sstream>
#include <iostream>
int main() {
    std::stringstream data;
    auto buf = data.rdbuf();
    char c;
    for (int count = 0; count < 10; count++) {
        buf->sputn("X", 1); 
    }   
    while (data >> c) {
        std::cout << c;
    }   
    return 0;
}
于 2014-08-12T06:04:19.267 回答