C ++ 流式传输到字符数组?

4

我目前正在开发一个使用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,但它似乎不完全符合我的需求,因为它使用自己的写入缓冲区而非我的,并且我不知道已经写入了多少字节等情况。

谢谢。


1
std::ostrstream;它已被弃用,但它可能适合您的情况。 - Angew is no longer proud of SO
1个回答

3

1
我已经查看了pubsetbuf。我遇到的问题是,我不知道有多少字节已经真正写入了我的缓冲区。例如,如果您将缓冲区大小设置为char buf [3] = {'\ 0'}; with pubsetbuf(buf,2);然后执行rdbuf() - > sputn(“ab”,2); rdbuf() - > sputn(“bb”,2);两个sputn的返回值都会表示一切正常,但只有第一个实际上已经写入了我的缓冲区(不知道第二个去哪里了?)-那么我如何知道:何时停止写入?以及已经写入了多少字节到我的缓冲区? - John Doe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接