cha*_*ged 7 c++ string file-io
我试图将一个非null终止的char数组输出到一个文件.
实际的是,我收到数据包,然后打印他们的字段.
现在,因为这些字段不是空终止的,例如,数据段的大小为512但可能完全占用也可能不完全占用.
当我将这些数据写入文件时,我使用简单的<<重载函数,它不知道有关实际数据的任何事情,只查找数据段的终止.
那么,我怎么能告诉输出函数只写这个特定数量的字节?
而不是使用这样的东西,每次调用都很昂贵:
enter code here
bytescopied = strncpy(dest, src, maxbytes);
if (bytescopied < 0) { // indicates no bytes copied, parameter error
throw(fit); // error handler stuff here
} else if (bytescopied == maxbytes) {
dest[maxbytes-1] = '\0'; // force null terminator
}
Run Code Online (Sandbox Code Playgroud)
Tad*_*pec 16
如果要准确输入maxbytes
字节,请使用write
方法
stream.write(buffer, maxbytes);
Run Code Online (Sandbox Code Playgroud)
如果缓冲区中的字节数较少,您如何知道缓冲区中包含多少字节?如果'\0'
标记缓冲区结束,您可以写:
stream.write(buffer, std::find(buffer, buffer+maxbytes, '\0') - buffer);
Run Code Online (Sandbox Code Playgroud)