我目前正在开发一个使用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
;它已被弃用,但它可能适合您的情况。 - Angew is no longer proud of SO