對於string字串中處理某單個字串,一般採用的是下標法和普通的for迴圈。在看c++primer中發現針對不同的情況可以有不同的處理方法。現總結如下:
有一些c函式可以用來處理字元,主要是cctype標頭檔案中的函式,使用要包含該標頭檔案
isalnum(c) 當c是字母或者數字時為真
isalpha(c) 當c是字母時為真
isdigit(c) 當c是數字時為真
islower(c) 當c是小寫字母時為真
isupper(c) 當c是大寫字母時為真
isspace(c) 當c是空白時為真(包括空格、橫向製表符、縱向製表符、回車符、換行符、進紙符中任意種)
ispunct(c) 當c是標點符號時為真
toupper(c) 若c為小寫字母,將c轉換成大寫字母輸出。不然原樣輸出
tolower(c) 若c為大寫字母,
將c轉換成小寫字母輸出。不然原樣輸出
以上1-7返回值為bool型別,為真返回true,不然返回false;8-9返回值為字元
處理每個字串(遍歷每個字串,且對單個字元不做修改,只做判斷)基於範圍的for語句(c++11新標準)
string str;
for(auto c:str) //c是變數,用於訪問str中每乙個元素,每次迭代c會初始化為str中的下乙個元素;str字串序列
處理每個字串(需要對某些字元做出修改):如果要改變string物件中字元的值,則必須把迴圈中的變數定義為引用型別
string str;for(auto &c:str) //c是變數,用於訪問str中每乙個元素,每次迭代c會初始化為str中的下乙個元素;str字串序列
處理部分字元,可以用下標法(最常使用的方法)和迭代器,一般的for迴圈。注意使用下標法:
首先檢查string物件是否為空,若為空不能用下標
下標索引不能超出範圍,不然引發的bug很難預料,0<=index
例子:編寫程式,輸入乙個包含數字的字串,將數字去除後輸出餘下的字元部分。
採用基於範圍的for語句,遍歷每個字元
string str;
cout << "原始字串為:" << endl;
getline(cin, str); //輸入字串
cout << "去除數字的字串為:" << endl;
for (auto c : str)
採用普通for迴圈遍歷字串
string str;
cout << "原始字串為:" << endl;
getline(cin, str); //輸入字串
if (str.empty())
cout << "去除數字的字串為:" << endl;
for (int i = 0; i < str.size(); i++)
cout << endl;
結果:
C 字串處理string
之所以拋棄char 的字串而選用c 標準程式庫中的string類,是因 為他和前者比較起來,不必擔心記憶體是否足夠 字串長度等等,而且作為乙個類出現,他整合的操作函式足以完成我們大多數情況下 甚至是100 的需要。我們可以用 進行賦值操作,進行比較,做串聯。我們盡可以把它看成是c 的基本資料型別。首...
字串處理 string型別
string型別變數的賦值與連線 s是字串變數名 一 string s 字串 定義並初始化 二 string s 個數,字元 定義並初始化為若干相同字母 三 string s 字串 定義並初始化賦值 四 s 字元 字串變數名 連線字串 string型別的運算 成員函式指某個型別的特有函式,其呼叫方式...
字串String的 簡單處理
1 charat int index 獲取指定位置的字元 public class teststring 2 tochararray 獲取對應的字串陣列 converts this string to a new character array.public class teststring 3 擷...