1. std::string 是否可以包含二進位制字元,答案是能
std::string ss = std::string("***") + '\2' + "yyy" + '\11' + "zzz";
std::cout << "len=[" << ss.size() << "],data=[" << ss << "]";
// len=[11],data=[***yyy zzz]
2. std::string 是否可以包含字元0,答案是能
std::string ss = std::string("***") + '\0' + "yyy" + '\0' + "zzz";
std::cout << "len=[" << ss.size() << "],data=[" << ss << "]";
// len=[11],data=[***yyyzzz]
3. 如何從char *構造std::string
3.1 整個字串
const char * cc = "***yyyzzz";
std::string ss(cc);
std::cout << "len=[" << ss.size() << "],data=[" << ss << "]" << std::endl;
// len=[9],data=[***yyyzzz]
3.2 指定長度子串
const char * cc = "***yyyzzz";
std::string ss(cc, 3);
std::cout << "len=[" << ss.size() << "],data=[" << ss << "]" << std::endl;
// len=[3],data=[***]
3.3 指定起始位置長度子串
const char * cc = "***yyyzzz";
std::string ss(cc + 3, 3);
std::cout << "len=[" << ss.size() << "],data=[" << ss << "]" << std::endl;
// len=[3],data=[yyy]
注意, 如果char *中包含'\0'字元, 那麼到'\0'後面的內容會被丟棄, 比如
const char * cc = "***yyy\0zzz";
std::string ss(cc);
std::cout << "len=[" << ss.size() << "],data=[" << ss << "]" << std::endl;
// len=[6],data=[***yyy]
因為const char *包含'\0'字元, 後面的"zzz"被丟棄了。總結一句話如果char *裡面包含'\0'字元,那麼'\0'之後的內容會被丟棄。
因此如果你試圖從buffer
unsigned char * buffer = ....
建立std::string物件採用buffer裡面的乙個字串 (offset, length)
std::string ss(buffer + offset, length);
如果在buffer + offset開始的length範圍內存在乙個'\0'字元; 那麼ss可能不是你想要的結果, ss只包含從buffer+offset開始到'\0'字元為止, '\0'以後的字元儘管它還在length之內, 也會被丟棄。
c++之所以這樣做是基於對char *規範的理解; char *的規範遇到'\0'表示char *結束; 也就是說'\0'之後的資料已經不屬於char *的範圍;因此任何試圖基於char *構造的std::string物件都不應該去訪問char *之外的資料; 這也就像strcpy和memcpy的區別一樣。
InServ T級儲存系統能否挑戰傳統儲存架構?
傳統儲存架構和業務之間似乎已經陷入一種瓶頸的怪圈。當儲存系統不能夠滿足業務需求時,就靠通過增加控制器處理能力和記憶體來滿足業務的需求 經過一段時間後,儲存系統又不能滿足業務需求時,又是靠通過增加處理能力和記憶體來達到目的。如此迴圈下去,最後陷入瓶頸的怪圈。傳統儲存架構的侷限性也促使儲存廠商們去思考如...
IT巨頭互掐雲儲存 Dropbox能否一馬當先
微軟推出skydrive多平台應用 與dropbox競爭 os x lion ios windows phone 等,這些不同客戶端對應的功能都極為相似。當然,如果你從來沒有嘗試過,建議還是安裝體驗下。只需要乙個windows live id,執行後,就可以在不同的電腦上使用相同的賬號登入到skyd...
雲儲存能否成為資料安全靈藥?幾個角度全方位剖析
51cto.com快譯 雲儲存已經成為目前最為流行的資料保護手段。從個人到各類企業都在嘗試利用雲儲存服務保護檔案,同時藉此實現隨時隨地訪問能力。不過在經過數次雲服務 商資料洩露事故之後,雲儲存的資料安全性亦成為使用者面臨的切實難題。那麼,我們是否該繼續依賴雲儲存以實現資料安全?雲安全漏洞其實與雲無關...