含有空字元0的char 字串給string賦值

2021-07-16 18:20:26 字數 735 閱讀 9239

這幾天在用thrift 傳輸乙個檔案時,發現此問題,特mark;

char字串給string賦值,都是用  string  str = string(charbuf),但如果charbuf 含有空字元,那麼賦值後字串會被0截斷,查了下string 的建構函式

string(const char * s)

說明:將string物件初始化為s指向nbts。nbts為null-byte-temnated string的縮寫,表示以空字元結束的字串------ 傳統的c字串

原來是用錯了string 建構函式,查了下用string的賦值函式assign可以實現含空字元字串賦值,其中string &assign(const char *s) 這種賦值方式,也將s當作c字串,也是會被'\0'截斷,要用帶字元個數才可以。具體見如下測試**:

c c 字串讀入含有空格

字串帶空格讀入在某些場合用的很多,題主總結了三中比較好用的方法 sring型別不能讀取空格,但是getline cin,string 可以,字串以回車 n 結束讀取。c語言中,常使用gets str 同樣以回車 n 結束。使用scanf c str 這個是以字元c為結束符,那麼修改下scanf n ...

空字元與空格字元 NULL 空字串

在許多的程式語言內,空字串的標記為兩個雙引號 而null又有以下理解 1.字面理解,null就是無效的 無價值的 2.在程式設計中,變數以null結尾,表示其後沒有可用的資料,資料讀取在此結束。3.null在資料庫中表示不知道 unknown 的資料,主要有3種意思 a 知道資料存在,但不知道具體值...

在有空字串的有序字串陣列中查詢 有點問題

存在乙個排序後的字串陣列,其中散布著一些空字串。根據使用者輸入的字串進行索引。例如,有序字串陣列。方法1 二分查詢,迭代方式 a a ac ad b ba b input x 0y len a 1 while 1 0 跟二分查詢的 一樣,只不過增加乙個判斷。判斷a item 是否是空串,若是空串,則...