直接初始化和拷貝初始化
string s1(10,'c');
string s2 = string(10,'c');//會影響效能!?
s1.size();//返回物件中字元的個數,型別為string::size_type,是無符號型別,不要與有符號型別混用
//範圍 for
string str("some string");
for(auto c : str)
//引用每個元素
string str("all to upper");
for(auto &c : str)
cout<< str << endl;
使用下標訪問空string會越界引發不可預知結果
無論何時用到字串的下標,都應該注意檢查其合法性.
列表初始化,盡可能把花括號內的值當成是元素初始值來處理,如果花括號提供的值不能用來列表初始化,則考慮建構函式等
在for等迴圈中,不要向容器中新增新元素,也不要改變容器的大小.在迭代中,某些對vector物件的操作會使迭代器失效.
iterator ite;
ite++;
--ite;
//不會越界?
ite + n;
ite - n;
int a[10];
decltype(a) b; 型別為10個元素的陣列
標準庫函式 begin end;end並非是陣列的最後乙個元素,而是最後乙個元素的下乙個位置.
ptrdiff_t size_t 都是帶符號型別.
標準庫限定使用的下標必須是無符號型別,陣列可以是有符號的.
string.c_str()返回c風格字串,無法保證此字串一直有效,如果以後希望使用,應該重新拷貝一次.
decltype 多維陣列 需要逐層解析 auto 也一樣
三 字串 向量和陣列
一 標準庫型別string 1 使用等號 初始化乙個變數,執行的是拷貝初始化,編譯器把等號右側的初始值拷貝到新建立的物件中 如何不使用等號,則執行的是直接初始化。2 os is s 從is中讀取字串賦給s,字串以空白分隔,返回is getline is,s 從is中讀取一行賦給s,返回is 3 st...
C 學習筆記三 字串 向量和陣列
標準庫型別string表示可變長的字串行,使用之前必須包含string標頭檔案,string定義在命名空間std中。在執行讀寫操作時,string物件會自動忽略開頭的空白 即空格符 換行符 製表符等 並從第乙個真正的字元讀起,直到遇到下一處空白為止。include include using nam...
三 字串 一
三 字串 1。直接量三種寫法 1 單引號,不會替換變數,且只支援 兩個轉譯字元 2 雙引號,會進行變數替換,雙引號能支援除了 以外的所有轉譯符 3 heredoc,比如 string end of string haha hehe hoho.hehe end of string 其中end of s...