我目前正在开发一个 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 但它似乎并不完全符合我的需求,因为它使用自己的写入缓冲区而不是我的
而且我也不知道已经写入了多少字节等等......
thx
您可以使用分配内存并将其包装在字符串流中std::stringstream::pubsetbuf http://en.cppreference.com/w/cpp/io/basic_streambuf/pubsetbuf:
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;
//...
}
Read std::stringstream http://en.cppreference.com/w/cpp/io/basic_stringstream, std::basic_streambuf http://en.cppreference.com/w/cpp/io/basic_streambuf and std::basic_stringbuf http://en.cppreference.com/w/cpp/io/basic_stringbuf.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)