亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++實現string存取二進制數據的方法

2020-01-26 15:16:33
字體:
來源:轉載
供稿:網友

本文實例講述了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(即:'/0'),剛好是字符串結束標志……

如果我們的代碼是如下寫的:

char data[max_length];size_t length = sockClient.read_some(boost::asio::buffer(data), ec);string strData(data);

我只能說,這個處理字符串應該沒問題,如果是二進制的話,會被string的構造函數給截斷一部分,導致strData和data的數據不一致。

其實一個簡單的demo就可以說明問題,比如如下代碼:

#include <string>#include <iostream>using namespace std;int main(){    char data[] = {'A','b',0x00,'c','d'};    string str1(data),str2(data,sizeof(data));    cout<<str1<<endl;    cout<<str1.size()<<endl;    cout<<str2<<endl;    cout<<str2.size()<<endl;    return 0;}

運行效果如下:

Ab2Abcd5 

從運行結果不難發現,采用str2的那種方式就可以保證string中的數據和原始data中的數據一致。這是因為采用不同的構造函數不同,導致結構完全不一樣,這個可以從我前面給出的網址中去查看具體的構造函數說明加以理解。這里我們回到前面的那個問題,如果想保存二進制的話,我們應該如下操作:

char data[max_length];size_t length = sockClient.read_some(boost::asio::buffer(data), ec);string strData(data,length);

如果要取出數據的話,也簡單(這個還以socket數據收發為例):

......// deal with strData......boost::asio::write(sockClient, boost::asio::buffer(strData.c_str(),strData.length()));

這里的strData.c_str()即為數據,strData.length()即為要發送的數據長度(當然也可以使用strData.size()來操作)。

當然,我們這里用string來存取二進制數據,也只是為了操作方便,感覺這個不是太好,應該會有很多朋友不提倡這種做法的,這里提供一個思路,大家覺得好就采用,覺得不好就一笑了之,呵呵……

希望本文所述對大家的C++程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
黄色一区二区在线观看| 午夜欧美大片免费观看| 久久影视电视剧免费网站清宫辞电视| 欧美中文字幕在线| 久久久久久九九九| 国产日韩精品入口| 97在线视频一区| 国产精品扒开腿爽爽爽视频| 国产日韩精品在线观看| 国产99久久精品一区二区| 欧美精品久久久久a| 国产精品mp4| 97精品在线观看| 成人精品视频在线| 欧美日韩成人在线播放| 红桃视频成人在线观看| 欧美人成在线视频| 国产精品久久久久秋霞鲁丝| 亚洲成人激情图| 蜜臀久久99精品久久久无需会员| 欧美日韩国产中文字幕| 91精品国产成人| 久久精品国产久精国产一老狼| 国产精品入口福利| 久热爱精品视频线路一| 国产日韩欧美夫妻视频在线观看| 国产偷亚洲偷欧美偷精品| 97久久超碰福利国产精品…| 一本色道久久88精品综合| 中文字幕精品av| 亚洲香蕉成视频在线观看| 91精品在线观看视频| 日本成人免费在线| 5566成人精品视频免费| 久久青草精品视频免费观看| 国产欧美精品va在线观看| 国产国语videosex另类| 欧美电影在线观看高清| 久久精品久久精品亚洲人| 51色欧美片视频在线观看| 久久久久中文字幕2018| 日韩欧美精品网址| 国产精品视频26uuu| 国产成人精品亚洲精品| 成人亲热视频网站| 超碰日本道色综合久久综合| 色小说视频一区| 97av在线播放| 久久精品国产成人精品| 一区二区三区回区在观看免费视频| 亚洲国产成人精品久久久国产成人一区| 亚洲精品久久久久国产| 日产精品久久久一区二区福利| 亚洲免费视频一区二区| 17婷婷久久www| 亚洲一区二区久久久久久| 美女视频黄免费的亚洲男人天堂| 黑人极品videos精品欧美裸| 精品夜色国产国偷在线| 色综合天天狠天天透天天伊人| 国产精品日韩在线| 国产精品免费视频久久久| 久久久久久香蕉网| 欧美一级淫片aaaaaaa视频| 91久久久久久久久久久久久| 久久99热这里只有精品国产| 一本一本久久a久久精品牛牛影视| 国产精品久久一区主播| 韩国三级日本三级少妇99| 8050国产精品久久久久久| 欧美三级免费观看| 欧美日韩国产精品一区二区三区四区| 欧美黄网免费在线观看| 国产亚洲精品久久久久久牛牛| 成人免费视频在线观看超级碰| 日韩精品中文在线观看| 18性欧美xxxⅹ性满足| 国产精品69精品一区二区三区| 欧洲美女7788成人免费视频| 亚洲精品欧美一区二区三区| 国产视频综合在线| 日韩免费中文字幕| 97视频在线观看免费| 国产午夜精品全部视频播放| 日韩精品免费在线播放| 2019中文字幕在线观看| 成人免费视频在线观看超级碰| 91精品视频在线播放| 国产精品毛片a∨一区二区三区|国| 国产精品成av人在线视午夜片| 国产精品第100页| 欧美极品少妇xxxxⅹ喷水| 日韩禁在线播放| 成人妇女免费播放久久久| 国产成人极品视频| 亚洲日本aⅴ片在线观看香蕉| 欧美激情一区二区三区久久久| 欧美亚洲成人免费| 国产999精品久久久| 久久国产视频网站| 国产视频精品久久久| 国产精品久久久久7777婷婷| 欧美激情手机在线视频| 亚洲级视频在线观看免费1级| 亚洲国产美女久久久久| 欧美成人激情图片网| 最新亚洲国产精品| 亚洲国语精品自产拍在线观看| 最近2019年中文视频免费在线观看| 亚洲影院色无极综合| 日韩美女主播视频| 欧美另类交人妖| 欧美肥臀大乳一区二区免费视频| 日韩最新免费不卡| 亚洲成色777777在线观看影院| www.日本久久久久com.| 日韩电影中文字幕在线观看| 国产盗摄xxxx视频xxx69| 亚洲mm色国产网站| 亚洲精品国产拍免费91在线| 国产ts一区二区| 欧美极品少妇xxxxⅹ免费视频| 日韩av网站导航| 在线电影中文日韩| 视频一区视频二区国产精品| 中文字幕国产精品| 国产97色在线|日韩| 97在线日本国产| 亚洲网址你懂得| 欧美日韩免费区域视频在线观看| 高跟丝袜一区二区三区| 精品国内产的精品视频在线观看| 日韩欧美在线字幕| 日韩在线国产精品| 欧美激情亚洲视频| 青青青国产精品一区二区| 日韩中文字幕视频| 成人免费xxxxx在线观看| 国产精品成人aaaaa网站| 午夜伦理精品一区| 91性高湖久久久久久久久_久久99| xxxx性欧美| 中文字幕亚洲无线码a| 精品国产拍在线观看| 国产精品一区二区3区| 欧美天天综合色影久久精品| 久久频这里精品99香蕉| 亚洲福利视频免费观看| 性色av一区二区三区红粉影视| 久久99热精品这里久久精品| 亚洲国产一区二区三区在线观看| 日韩欧美国产高清91| 久久国产精品久久久| 国产香蕉精品视频一区二区三区| 亚洲国产91精品在线观看| 国产亚洲精品美女久久久| 精品久久久久国产| 欧美中文在线观看国产| 欧美在线播放视频| 国产欧美精品xxxx另类| 久久久精品美女| 久久手机免费视频| 国产亚洲精品美女久久久久| 国产精品第2页|