fwrite Binary Stream to char数组或字符串

时间:2015-03-05 22:34:05

标签: c++ redirect stream binary fwrite

    size = recvfrom(sockfd, buf, BUF_SIZE, 0, (struct sockaddr *)&src, &srclen);
    /*stuff*/
    fwrite(buf, size, 1, stdout);

我使用recvfrom()获取一条消息,并且能够通过fwrite输出到stdout,但是我需要将我当前刚刚输出的数据存储到控制台。这样做的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

由于二进制数据可能包含空值,因此您无法使用通常的字符串转换或C字符串函数(部分复制的风险)。解决方案是:

char *pbuf = new char[size]; 
if (pbuf) 
   std::copy(buf, buf+size, pbuf);  
// then store the pointer somewhere

它使用std::copy(),它将区域的开头和结尾复制它,因此它适用于二进制数据。