我将一些数据放入从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但它似乎没有按预期工作。任何想法可能是正确的方法吗?
答案 0 :(得分:3)
只需使用data.seekp(pos);
然后使用data.write()
- 您根本不需要填充缓冲区。
答案 1 :(得分:0)
这可能有助于您开始使用,它会写入一些X
并将其打印回来,这也可以通过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;
}