//將字串s全變為大寫
for(char &i : s)
範圍for語句是c++11標準,用g++編譯時,需要加上-std=c++11
,不然會提示range-based 『for』 loops are not allowed in c++98 mode
範圍for迴圈相對於傳統for迴圈和while迴圈的優點是,我們無需關心迴圈邊界條件,防止越界訪問。
string temp;
while(cin >> temp)
用cin輸入字串,cin會忽略輸入流中的空白(空格符、換行符、製表符等),將連續的字元提取出來。例如輸入分隔開的」hello world!」,實際會進入兩次while,temp先是」hello」,再是」world!」
string temp;
while(getline(cin, temp)
用getline()輸入字串,可保留輸入時的空白符。getline()在遇到換行符時會返回,返回時,不會將換行符儲存到字串中。
//錯誤,應該為char str[2] = "a";
char
str[1] = "a";
//錯誤,字元陣列未顯式初始化
char
str[5];
cout << str
<< endl;
//錯誤,不允許拷貝初始化
char a = b;
用字串字面值初始化字元陣列。上述語句會編譯報錯error: initializer-string for array of chars is too long
,"a"
是字串,編譯器會在字串後面新增乙個空字串'\0'
,因此字串字面值的實際長度要比它的內容多1,陣列中包含\0
.
字元陣列未顯式初始化時,裡面的內容是未定義的,我們不知道裡面是什麼內容。
陣列不允許拷貝初始化。
//正確,str不包含\0
string str = "a";
//正確,string未顯式初始化,預設初始化為空串
string str;
cout
<< str /正確,string支援拷貝初始化
string a = b;
用字串字面值初始化string物件。字串字面值包含a
和\0
,初始化時,除了最後的空子符外,其他的字元都被拷貝到新建立的string物件中,即string物件中不包含\0
。
string物件未顯式初始化時,執行預設初始化,str是乙個空字串。
string物件支援拷貝初始化。
//string --> char*
const
char *str = s.c_str();//str必須為const
//char --> string
char str = "a";
string s = str;//對於string s = "a",我們可以將字串字面值"a"替換為以空字元結尾的str
//int --> vector
int arr = ;
vector
vec(begin(arr), end(arr));
//vector--> int,for迴圈
vector
vec;
int arr[3];
for(int *i = begin(arr); i != end(arr); i++)
*i = vector[i-begin(arr)];
1.迭代器end()指向尾元素的下乙個元素,這樣當begin!=end時,說明容器中還有內容。
2.迭代器的判斷用!=而不用
//accumulate的第三個引數如果是0,那麼返回的是int型2;如果引數是0.0,那麼返回的是double型2.1
vector
vec;
auto res = accumulate(vec.cbegin(), vec.cend(), 0.0)
C 學習筆記( )
一 語法 迴圈 foreach 型別識別符號 in 表示式 code 用法 例子int temp foreach int num in temp 每次從temp取乙個元素賦給num直至取完 console.writeline n num 每行顯示乙個元素 執行結果 c 中唯讀 只寫控制 class ...
C 學習筆記
1.函式特徵 有函式頭和函式體 接受乙個引數 返回乙個值 需要乙個原型。2.c 命名規則 在名稱中只能使用字母字元 數字和下劃線 名稱的第乙個字元不能是數字 區分大寫字母和小寫字母 不能將c 關鍵字用作名稱 以兩個下劃線或下劃線和大寫字母打頭的名稱被保留給實現 編譯器及其使用的資源 使用,以乙個下劃...
c 學習筆記
屬性 屬性開頭字母大寫 屬性可以判斷輸入的非法值 屬性本身不儲存值 依靠字段 索引器 using system using system.collections.generic using system.linq using system.text namespace b try catch exc...