挑戰C++程式語言 ──第8章 進一步談字元與字串
本章主題 字元的應用 字串的應用
字元的應用 字元的宣告與初值設定 字元的運算 char c ='1'; char c = 49; char c('1'); char c = 'a'; c++ ;
字元的應用 控制字元 cout << "\f"; cout << "\n\f\f"; cout << '\n' << '\f' << '\f';
字元的應用 測試字元
字元陣列 【正確的語法】 char s2[6] = {'o','b','j','e','c','t'}; 【錯誤的語法】 char s8[6] = {'o','b','j','e','c','t',' ','o','r','i','e','n','t','e','d'}; char s9[8] = "object oriented";
字元陣列 【正確的語法】 char s8[15] = {'o','b','j','e','c','t',' ','o','r','i','e','n','t','e','d'}; char s9[15] = "object oriented"; 【錯誤的語法】 char s10[8],s11[8]; // 正確 s10 = "object"; // 錯誤 s11[] = "object"; // 錯誤
字串的應用 字串的宣告與初值設定 【strcpy()函數語法】 string name1; // 宣告空字串name1 string address = (“住址”); // 也可以用函數方式設定其值 name1 = “姓名”; // 用雙引號設定name1的初值 char s1[size], s2[size]; strcpy(s1,s2) // 將s2複製到s1。 strncpy(s1,s2,n) // 將s2的前n個字元取代s1的前n個字元
字串的應用 字串的連結 : + 【strcat()函數語法】 string s1 = "object"; char s2[] = "oriented"; string s3 = "analysis"; s1 = s1 + " " + s2 + " " + s3; char s1[size],s2[size]; strcat(s1,s2); // 將s2加到s1之後 strncat(s1,s2,n); // 將s2的前n個字元加到s1之後
字串的應用 字串的長度 【length語法】 s1 = "object"; cout << "s1.length = " << s1.length() << endl; 則印出 s1.length = 6 string s1; s1.length; // 傳回s1的長度
字串的應用 字串的長度 【length語法】 【strlen()函數語法】 s1 = "object"; cout << "s1.length = " << s1.length() << endl; 則印出 s1.length = 6 string s1; s1.length; // 傳回s1的長度 char s1[size]; strlen(s1); // 傳回s1的長度
字串的應用 子字串 【substr()函數語法】 string s1; s1.substr(a); // 擷取string s1的第a個字元至最後一個字元。 s1.substr(a,b); // 從string s1的第a個字元開始擷取b個字元。
【compare( )函數如何判定string的大小】 字串的應用 比較字串大小 【compare( )函數如何判定string的大小】 string s1 = "object oriented analysis"; string s2 = "object oriented design"; if (s1 > s2) 若s1 大於 s2 則s1.compare(s2) 的結果大於0。 若s1 等於 s2 則s1.compare(s2) 的結果等於0。 若s1 小於 s2 則s1.compare(s2) 的結果小於0。
比較字串大小 【compare( )函數語法】 string s1, s2; s1.compare(s2); // 比較s1 與 s2 s1.compare(i1,len1,s2); // 比較s1.substr(i1,len1) 與 s2 s1.compare(i1,len1,s2,i2,len2); // 比較s1.substr(i1,len1) 與 // s2.substr(i2,len2) s1.compare("test string"); // 比較s1 與 "test string" s1.compare(i1,len1,"test string"); // 比較s1.substr(i1,len1) 與 "test string" s1.compare(i1,len1," test string",len2); // 比較s1.substr(i1,len1) 與 "test string"兩者的前len個字元
比較字串大小 【strcmp()函數語法】 char s1[size], s2[size]; // 也可以宣告為char *s1, *s2; strcmp(s1,s2); // 比較s1與s2,若 // s1 > s2 則傳回值 > 0 // s1 == s2 則傳回值 == 0 // s1 < s2 則傳回值 < 0 strcmp(s1,s2,n); // 比較s1與s2兩者的前n個字元
尋找某字串 【find( )函數語法】 【find( )函數進階語法】 string s1, s2; s1.find(s2); // 在字串s1中尋找子字串s2 // s2可以是單一字元 if(s1.find(s2)==string::npos) Not Found s1.find(s2,i1); // 從s1[i1]開始搜尋s2 s1.find(s2,i1,len2); // 從s1[i1]開始搜尋s2.substr(0,len2) s1.find("find string",i1); // 從s1[i1]開始搜尋 "find string" s1.find("find string",i1,len2); // 從s1[i1]開始搜尋"find string"的前len2個字元
【find_first_of( )函數語法】 尋找特定字元 【find_first_of( )函數語法】 string s1, s2; s1.find_first_of(s2); // 從s1[0]開始找屬於s2中的元素 s1.find_first_not_of(s2); // 從s1[0]開始找不屬於s2中的元素 s1.find_last_of(s2); // 從s1尾端開始找屬於s2中的元素 s1.find_last_not_of(s2); // 從s1尾端開始找不屬於s2中的元素
插入字串 【insert()函數語法】 string s1, s2; s1.insert(i1,s2); // 將s2插入到s1[i1]之前 s1.insert(i1,"insert string"); // 將 "insert string" 插入到 // s1[i1]之前 s1.insert(i1,s2,i2,len2); // 將s2.substr(i2,len2)插入到 s1.insert(i1,"insert string",len2); // 將 "insert string" 的前len2個字元插入到 s1[i1]之前 s1.insert(i1,len2,ch); // 將連續len2個字元ch插入到s1[i1]之前
替換字串內容 【replace( )函數語法】 string s1, s2; s1.replace(i1,len1,s2); // 將s1.substr(i1,len1)替換為s2 s1.replace(i1,len1,len2,ch); // 將s1.substr(i1,len1)替換為 // 連續len2個ch字元 s1.replace(i1,len1,s2,i2,len2); // 將s1.substr(i1,len1)替換為 // s2[i2,len2]
刪除子字串 【erase( )函數語法】 string s1; s1.erase(i1,len1); // 將s1.substr(i1,en2)刪除
結論 初值設定 字串的連結 字串的長度 子字串 比較字串大小 尋找某字串 尋找特定字元 插入字串 替換字串內容 刪除子字串