是否有相当于fwrite用于写入char *数组?我尝试过stringstream但它似乎并没有完全相同。我可以使用memcpy,但我正在失去对计数的追踪......
澄清要写入的数据可能只有nul。我想
write(array, &someint, 4);
write(array, &bunchofdata, sizeof(bunchofdata));
write(array, somestring, somestring.length());
并继续增加偏移量。
答案 0 :(得分:2)
创建写入固定大小缓冲区的流缓冲区非常容易。获得流缓冲区后,可以在为其构建std::ostream
后使用常规流操作向其写入。例如:
struct membuf
: std::streambuf
{
membuf(char* base, std::size_t size) { this->setp(base, base + size); }
char* end() { return this->pptr(); }
};
int main()
{
char buffer[12345];
membuf sbuf(buffer, sizeof(buffer);
std::ostream out(&sbuf);
out << "hello, world\n";
std::cout << "wrote " << (sbuf.end() - buffer) << " bytes\n";
}
显然,您也可以使用未格式化的流操作。
答案 1 :(得分:0)
如果要显式传递大小和计数,可以在memcpy周围创建一个轻量级包装器(内联函数或宏),保存与fwrite相同的参数。
#define memwrite(buffer, size, count, destination) \
memcpy(destination, buffer, (size) * (count))