我试图将一个未以null结尾的char数组输出到文件中。
实际情况是,我正在接收数据包并打印它们的字段。
现在,由于这些字段没有以null结尾,例如,数据段的大小为512,但可能完全没有被占用。
当我将这些数据写入文件时,我使用简单的<<重载函数,它不知道实际数据的任何内容,只寻找数据段的终止。
那么,我该如何告诉输出函数仅写入这么多特定字节数?
而不是每次调用都使用昂贵的方法,像这样:
实际情况是,我正在接收数据包并打印它们的字段。
现在,由于这些字段没有以null结尾,例如,数据段的大小为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
}
strlen
。但在这种情况下,你可能会更倾向于使用更惯用的方式来完成整个语句:stream << buffer
。 - Rob Kennedystrnlen(buffer, maxbytes)
。不需要玩弄指针或任何东西。 - gnud