【发布时间】:2013-04-27 20:13:40
【问题描述】:
我目前正在开发一个 c++ 应用程序,该应用程序正在使用一个 c 库,该库需要从我这边实现一个回调 例如回调定义如下:
int onWrite(char *what, char *buffer, size_t size, off_t offset);
我有 std::set 需要格式化并写入缓冲区并处理大小和偏移量,其中大小是缓冲区的大小和偏移量已经处理了多少字节
有没有一种 c++ 方法可以让我像流一样进入缓冲区? 我在想这样的事情:
SomeSTLStandardStream stream(buffer,size);
stream.ignore(offset); // to drop the first n offset bytes
for(it=dataset.begin();it!=dataset.end() && stream.buffer_avail()>0;it++)
stream << *it << "|"; // format csv like for example
我的核心问题是:是否有一种标准的 c++ 方法来抓取一段格式化/流式数据并写入给定的缓冲区?
如果没病就得自己实现
我还查看了 stringstream,但它似乎不完全符合我的需求,因为它使用自己的写缓冲区而不是我的 而且我也不知道已经写入了多少字节等等......
谢谢
【问题讨论】:
-
有
std::ostrstream;它已被弃用,但它可能适合您的场景。