当前位置: 编程技术>c/c++/嵌入式
C++实现string存取二进制数据的方法
来源: 互联网 发布时间:2014-10-29
本文导语: 本文实例讲述了C++实现string存取二进制数据的方法,分享给大家供大家参考。具体方法分析如下: 一般来说,STL的string很强大,用起来也感觉很舒服,这段时间在代码中涉及到了用string存取二进制数据的问题,这里记录一下,...
本文实例讲述了C++实现string存取二进制数据的方法,分享给大家供大家参考。具体方法分析如下:
一般来说,STL的string很强大,用起来也感觉很舒服,这段时间在代码中涉及到了用string存取二进制数据的问题,这里记录一下,以供以后参考。
首先提一下STL中string的参考资料:http://www.cplusplus.com/reference/string/string/ ,不懂的朋友可以看下。
在数据传输中,二进制数据的buffer一般用系统预设的大数组进行存储,而不是STL的string等,比如:
const int max_length = 1024 * 1024; unsigned char data[max_length];
因为二进制数据中可能会包含0x00(即:''),刚好是字符串结束标志……
如果我们的代码是如下写的:
char data[max_length]; size_t length = sockClient.read_some(boost::asio::buffer(data), ec); string strData(data);
我只能说,这个处理字符串应该没问题,如果是二进制的话,会被string的构造函数给截断一部分,导致strData和data的数据不一致。
其实一个简单的demo就可以说明问题,比如如下代码:
#include #include using namespace std; int main() { char data[] = {'A','b',0x00,'c','d'}; string str1(data),str2(data,sizeof(data)); cout