c 強大的字串流處理

2021-07-25 14:46:40 字數 1126 閱讀 2358

本文著重介紹 c++ stringstream 處理字串,前提是大家對於基本的 char , char * , string 已經很熟悉了。

(1)型別轉換

也許你還習慣於使用 sprintf , itoa 之類的函式,這種c風格的函式具有乙個致命的弱點:不安全性。乙個不小心的失誤就可能造成程式的崩潰~~~ 

拋磚引玉,參考部落格:

(2)字串處理

一般來說,對於字串處理,sscanf 和 sprintf 比較強大,但是,我上面已經說清楚了,它們並不安全。

枯燥的理論總是讓人想睡覺,這裡舉個例項:

如何從 s 中提取出 string person , int left , int right , int up , int bottom ?

直觀的想法就是使用 sscanf 了,但是它既不安全也不簡潔,我們此處使用 stringstream。

stringstream ss;

ss << s;

int left, right, up, down, more;

ss >> image_name >> left >> right >> up >> down >> more;

cout << "value:" << image_name << " " << left << " " << right << " " << up << " " << down << " " << more << endl;

bool b_eof = ss.eof ( );

bool b_fail = ss.fail ( );

cout << "eof bit:" << b_eof << " fail:" << b_fail << endl;

尤其注意,如果只有 4 個數字,而我們強行讀取 left , right , up , bottom , more 5個數字,則 more 為亂碼,同時 stringstream ss 的 eofbit = true , failbit = true,這兩個錯誤標記位可以通過 eof() 和 fail() 獲得。

暫時寫到這裡,持續更新中。

C 檔案流 字串流

include include include include include include using namespace std ifstream in void except catch int main char a,b string str,word,str1,str2 sssssss ...

C 字串流儲存資料

檔案流是以外存檔案為輸入輸出物件的資料流。字串流是以記憶體中使用者定義的字元陣列 字串 為輸入輸出物件的。建立輸出字串流 ostrstream strout c,sizeof c 第乙個引數是字元陣列首元素的指標,第二個引數為指定的流緩衝區的大小 一般選與字元陣列c的大小相同 建立輸入字串流 ist...

關於字串流的學習 c

字串流 在字元陣列中可以存放字元,也可以存放整數 浮點數以及其他型別的資料。在向字元陣列存入資料之前,要先將資料從二進位制形式轉換為ascii 然後存放在緩衝區,再從緩衝區送到字元陣列。從字元陣列讀資料時,先將字元陣列中的資料送到緩衝區,在賦給變數前要先將ascii 轉換為二進位制形式。總之,流緩衝...