C++ 字符分類

2023-03-20 15:56 更新

一般來說,檢查一個字符并測試它是大寫還是小寫、是字母還是數(shù)字是有用的。C++提供了一組庫函數(shù)用來執(zhí)行這種分類操作。要使用這些函數(shù),需要包含頭文件ctype.h。

char letter = ’a’;
if (isalpha(letter)) {
  cout << "The character " << letter << " is a letter." << endl;
}

你可能期望isalpha的返回值是bool類型,但由于一些甚至我都不想考慮的原因,它的返回值實際是整型,如果參數(shù)不是字母那結(jié)果會是0,參數(shù)是字母時結(jié)果就是非0值。

這個奇怪現(xiàn)象并不像看起來這般不便,因為如例子所示,在條件中使用這種整型數(shù)是合法的,其中0被當(dāng)做假,而非0值被當(dāng)做真處理。

從技術(shù)上講,這種事情是不允許的——整型數(shù)并不同于布爾值。盡管如此,C++允許不同類型間自動轉(zhuǎn)換這個習(xí)慣是有用的。

其他字符分類函數(shù)包括isdigit(用以識別0~9之間的數(shù)字)、isspace(用以識別各種空白字符,如空格符、制表符、換行符)等等。其他如isupper和islower函數(shù)用以識別大小寫字母。

最后,還有兩個進行大小寫轉(zhuǎn)換的函數(shù),它們是toupper和 tolower。它們都接收一個字符型的參數(shù)并返回轉(zhuǎn)換后的字符。

char letter = ’a’;
letter = toupper (letter);
cout << letter << endl;

這段代碼的輸出是A。

作為練習(xí),請使用字符分類與轉(zhuǎn)換庫編寫apstringToUpper和apstringToLower函數(shù),它們都接收一個apstring類型的參數(shù),將參數(shù)中的所有字母都轉(zhuǎn)換為大寫或者小寫,返回類型為void。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號