1. 程式人生 > >【C++】如何統計一個字串中某個字元出現的個數?將C-風格字串作為引數的函式

【C++】如何統計一個字串中某個字元出現的個數?將C-風格字串作為引數的函式

目錄

預備的基礎知識 

將C-風格字串作為引數的函式

C-風格字串與常規char陣列之間的區別

 統計某個字串中含有字元個數的程式


 

預備的基礎知識 

C-風格字串由一系列字元組成,以空值字元結尾('\0')

將字串作為引數時意味著傳遞的是 地址,但可以使用const來禁止對 字串引數進行修改

將C-風格字串作為引數的函式

表示字串的方式有三種:

  1. char陣列                                                                    char ghost[15] = "galloping"
  2. 用引號括起來的字串常量                                                                   "galloping"
  3. 被設定為字串的地址的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來進行判斷,雖然簡單,但很實用

執行結果: