fwrite 二进制流到字符数组或字符串


    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 的开头和结尾来复制它,因此它适用于二进制数据。

相关内容

  • 没有找到相关文章

最新更新