gpt4 book ai didi

C++流式传输到char数组?

转载 作者:行者123 更新时间:2023-11-28 07:38:02 27 4
gpt4 key购买 nike

我目前正在开发一个 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::stringstream::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;

//...
}

阅读std::stringstream , std::basic_streambufstd::basic_stringbuf .

关于C++流式传输到char数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16358669/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com