c 精學之cin和string

2021-09-25 05:51:30 字數 965 閱讀 1071

cin只讀取『 』之前的字元 遇到空格結束 但是如果空格後面還有字元則會留在輸入佇列中 留給下乙個cin或者類似的東西

cin.getline(物件,輸入字元數) 則是以回車為結束

cin.get(物件,輸入字元數)很特殊 他也是以回車為結束 但是它不同於上面兩種 它並不是 讀取回車再丟棄 而是將換行符留在輸入佇列中 所以會出現 如果連續使用兩個cin.get(物件,輸入字元數) 則因為換行符還在佇列中 並未被丟棄 第二個,第三個第四個 乃至無數個 cin.get都將讀到這個換行符然後直接結束  此時我們可以在 第乙個cin.get(物件,輸入字元數)後面加入乙個無參的cin.get()這個會直接讀取換行符 下乙個cin.get(物件,輸入字元數)就有效了  也可以寫成 cin.get(物件,輸入字元數).get()

反正這個什麼cin.getline和cin.get都容易被換行符弄出bug 注意一下 一般後面接乙個無參get()或者get(ch)解決

小技巧  cin.getline(xx,xx).getline(xx.xx)和寫兩行是一樣的效果

可以直接建立 string a    就是類似建立了乙個a陣列的物件(就是乙個string資料型別的物件) 相比於陣列 陣列不能直接傳遞 但是string物件可以()也就是string物件可以=string物件 還可以直接用+好進行連線 並且string物件會自動調節物件的長度

可以通過 a.size()知道這個string物件的長度 於原來strlen函式類似作用

新增wchar_t  char16_t  char32_t

但是使用時  whar_t  a=l"asdfsfd";       char16_t b=u"asdfadsf";     char32_t c=u"sadfadsf";

原始字串 raw  在這裡 /n就是/n不是換行  「也只是本身 使用方法  cout《也可以寫成 r"+*("(aaa)")+*"則會輸出"(aaa)"  在「(之中加什麼都行 但是要原樣在結尾加注意 順序必須一樣  

C 之 cin 與 !cin 的原理分析

在判斷檔案開啟成功與否或是連續從流中讀取資料時,就要用到對流對像的操作,比如if cin 或是 whie cin 等等。while cin val 我們都知道 cin 是乙個流物件,而 運算子返回左邊的流物件,也就是說 cin val 返回 cin,於是 while cin val 就變成了 whi...

String和StringBuffer學習總結

一 string x abc 和string y new string abc 區別 string x abc 變數x指向的是常量池的字串常量物件。x asd 表示x指向 asd 字串常量的位址,而不是把 abc 修改為 asd string y new string abc 變數y指向的是堆中的字...

C 之cin的使用

cin建有乙個緩衝區,即輸入緩衝區。一次輸入過程是這樣的,當一次鍵盤輸入結束時會將輸入的資料存入輸入緩衝區,而cin函式直接從輸入緩衝區中取資料。正因為cin函式是直接從緩衝區取資料的,所以有時候當緩衝區中有殘留資料時,cin函式會直接取得這些殘留資料而不會請求鍵盤輸入,這就是為什麼有時會出現輸入語...