string字串中處理字元的問題 for迴圈

2021-08-19 13:19:33 字數 1760 閱讀 1208

對於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 擷...