fwrite 二进制流到字符数组或字符串
fwrite Binary Stream to char array or string
size = recvfrom(sockfd, buf, BUF_SIZE, 0, (struct sockaddr *)&src, &srclen);
/*stuff*/
fwrite(buf, size, 1, stdout);
我使用 recvfrom() 获得一条消息,并且能够通过 fwrite 输出到 stdout,但我需要存储我当前刚刚输出到控制台的数据。执行此操作的最佳方法是什么?
由于二进制数据可能包含空值,您不能使用通常的字符串转换或 C 字符串函数(部分复制的风险)。解决方案是:
char *pbuf = new char[size];
if (pbuf)
std::copy(buf, buf+size, pbuf);
// then store the pointer somewhere
它使用std::copy()
,它使用reginon的开始和结束来复制它,所以它适用于二进制数据。
size = recvfrom(sockfd, buf, BUF_SIZE, 0, (struct sockaddr *)&src, &srclen);
/*stuff*/
fwrite(buf, size, 1, stdout);
我使用 recvfrom() 获得一条消息,并且能够通过 fwrite 输出到 stdout,但我需要存储我当前刚刚输出到控制台的数据。执行此操作的最佳方法是什么?
由于二进制数据可能包含空值,您不能使用通常的字符串转换或 C 字符串函数(部分复制的风险)。解决方案是:
char *pbuf = new char[size];
if (pbuf)
std::copy(buf, buf+size, pbuf);
// then store the pointer somewhere
它使用std::copy()
,它使用reginon的开始和结束来复制它,所以它适用于二进制数据。