相当于二进制数据的字符 * 的 fwrite
Equivalent of fwrite for char * for binary data
有没有等效的fwrite来写入char *数组?我尝试了字符串流,但它似乎没有完全相同的作用。我可以使用memcpy,但我忘记了计数...
要写入的澄清数据中可能包含 NUL。我想
write(array, &someint, 4);
write(array, &bunchofdata, sizeof(bunchofdata));
write(array, somestring, somestring.length());
并继续增加偏移量。
创建写入固定大小缓冲区的流缓冲区非常容易。拥有流缓冲区后,可以在为其构造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, worldn";
std::cout << "wrote " << (sbuf.end() - buffer) << " bytesn";
}
显然,您也可以使用未格式化的流操作。
如果你想显式地传入大小和计数,你可以围绕memcpy创建一个轻量级的包装器(内联函数或宏),它保留与fwrite相同的参数。
#define memwrite(buffer, size, count, destination)
memcpy(destination, buffer, (size) * (count))
相关文章:
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 如何在C++中从字符串中分割字符
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 指向指向字符数组的指针数组的指针
- 如何用转义符替换字符串中的所有特殊字符
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 比较字符数组
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 如何在C++中确定文本文件中的元素是字符还是数字
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- fwrite 4 字符数组,将写入 7 而不是 4
- fwrite 二进制流到字符数组或字符串
- 相当于二进制数据的字符 * 的 fwrite