【C++】如何統計一個字串中某個字元出現的個數?將C-風格字串作為引數的函式
阿新 • • 發佈:2019-01-05
目錄
預備的基礎知識
C-風格字串由一系列字元組成,以空值字元結尾('\0')
將字串作為引數時意味著傳遞的是 地址,但可以使用const來禁止對 字串引數進行修改
將C-風格字串作為引數的函式
表示字串的方式有三種:
- char陣列 char ghost[15] = "galloping"
- 用引號括起來的字串常量 "galloping"
- 被設定為字串的地址的char指標 char * str = "galloping"
上述這三種類型其實都是char指標(char * )
將字串作為引數來傳遞,但 實際傳遞的是字串第一個字元的地址。字串函式原型應將其表示字串的形參宣告為char*型別
C-風格字串與常規char陣列之間的區別
字串有內建結束字元
包含字元,但不以空值字元結尾的char陣列只是陣列,不是字串!
這意味著不必將字串長度作為引數傳遞給函式,而函式可以使用 迴圈來依次 檢查字串中的每個字元,直到遇到結尾的空值字元為止。比如:while ( *str )
統計某個字串中含有字元個數的程式
#include <iostream> unsigned int c_in_str(const char * str, char ch); int main() { using namespace std; char mmm[15] = "minimum"; char *wail = "ululate"; unsigned int ms = c_in_str(mmm, 'm'); unsigned int us = c_in_str(wail, 'u'); cout << ms << " 個 m 在 " << mmm << endl; cout << us << " 個 u 在" << wail << endl; cin.get(); return 0; } //函式建立 unsigned int c_in_str(const char * str, char ch) { unsigned int count = 0; while (*str) //字串本身自己帶有空值字元 { if (*str == ch) count++; str++; } return count; }
巧妙就巧妙在:while來進行判斷,雖然簡單,但很實用
執行結果: