c++;流到字符数组? 我目前正在使用C++应用程序,它需要一个C语言库,它需要从我这边实现的回调函数。 例如,回调定义如下: int onWrite(char *what, char *buffer, size_t size, off_t offset);

c++;流到字符数组? 我目前正在使用C++应用程序,它需要一个C语言库,它需要从我这边实现的回调函数。 例如,回调定义如下: int onWrite(char *what, char *buffer, size_t size, off_t offset);,c++,arrays,stream,char,C++,Arrays,Stream,Char,我有一个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.

我有一个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
somestsltstandardstream(缓冲区、大小);
流。忽略(偏移);//删除前n个偏移量字节的步骤
for(it=dataset.begin();it!=dataset.end()&&stream.buffer\u avail()>0;it++)

stream您可以使用以下方法分配内存并将其包装为字符串流:

intmain()
{
char-buf[1024];
std::stringstream;
stream.rdbuf()->pubsetbuf(buf,sizeof(buf));

stream有
std::ostream
;它已被弃用,但可能适合您的场景。我已经看过pubstebuf了。我的问题是,我不知道是否或有多少字节真正写入了我的buf。例如,如果您将缓冲区大小设置为char buf[3]={'\0};使用pubstebuf(buf,2);然后执行rdbuf()->sputn(“ab”,2);rdbuf()->sputn(“bb”,2);两个sputn的返回值都表示一切正常,但只有第一个已实际写入我的buf(不知道第二个已写入何处?)-那么我如何知道:何时停止写入?有多少字节已写入我的buf?
 int main()
 {
    char buf[1024];

    std::stringstream stream;

    stream.rdbuf()->pubsetbuf(buf, sizeof(buf));

    stream<< "Hello " << "World " << std::endl;

    std::string str;
    std::getline(stream, str);
    std::cout << str << std::endl;

    //...
}