パープルハット

※当サイトではGoogleアドセンス広告を利用しています

C++ 大文字・小文字判定(islower, isupper)



1文字(char)の場合

解説

char型変数cについて、

  • 大文字である ⇒ isupper(c)が非ゼロ
  • 小文字である ⇒ islower(c)が非ゼロ

が成り立つ。各関数のリファレンスは次の通り(本記事でも参考にしました)。
isupper - cpprefjp C++日本語リファレンス
islower - cpprefjp C++日本語リファレンス


実装例1:isuuperを使う場合

ソースコード

#include <iostream>
using namespace std;

int main() {
	char c1 = 'f';
	if (isupper(c1)) {
		cout << "c1は大文字" << endl;
	}
	else {
		cout << "c1は小文字" << endl;
	}

	char c2 = 'D';
	if (isupper(c2)) {
		cout << "c2は大文字" << endl;
	}
	else {
		cout << "c2は小文字" << endl;
	}
}

実行結果

c1は小文字
c2は大文字



実装例2:islowerを使う場合

  • 実行結果は実装例1と同じなため省略

ソースコード

#include <iostream>
using namespace std;

int main() {
	char c1 = 'f';
	if (islower(c1)) {
		cout << "c1は小文字" << endl;
	}
	else {
		cout << "c1は大文字" << endl;
	}

	char c2 = 'D';
	if (islower(c2)) {
		cout << "c2は小文字" << endl;
	}
	else {
		cout << "c2は大文字" << endl;
	}
}




2文字以上(string)の場合

解説

先ほどのislowerとisupperを使ってforでループすればOKです。


実装例1:全文字が大文字か判定

ソースコード

#include <iostream>
using namespace std;

// すべて大文字かを判定
bool IsAllUpper(string s) {
	for (const char& c : s) {
		if (islower(c)) {
			return false;
		}
	}
	return true;
}

int main() {
	string s1 = "eFG";
	string s2 = "EFG";

	// s1が全て大文字かを判定
	if (IsAllUpper(s1)) {
		cout << "s1は全て大文字" << endl;
	}
	else {
		cout << "s1には小文字が含まれる" << endl;
	}

	// s2が全て大文字かを判定
	if (IsAllUpper(s2)) {
		cout << "s2は全て大文字" << endl;
	}
	else {
		cout << "s2には小文字が含まれる" << endl;
	}
}

実行結果

s1には小文字が含まれる
s2は全て大文字



実装例2:全文字が小文字か判定

コードの構造は実装例1と同じ

ソースコード

#include <iostream>
using namespace std;

// すべて大文字かを判定
bool IsAllLower(string s) {
	for (const char& c : s) {
		if (isupper(c)) {
			return false;
		}
	}
	return true;
}

int main() {
	string s1 = "efg";
	string s2 = "efG";

	// s1が全て大文字かを判定
	if (IsAllLower(s1)) {
		cout << "s1は全て小文字" << endl;
	}
	else {
		cout << "s1には大文字が含まれる" << endl;
	}

	// s2が全て大文字かを判定
	if (IsAllLower(s2)) {
		cout << "s2は全て小文字" << endl;
	}
	else {
		cout << "s2には大文字が含まれる" << endl;
	}
}

実行結果

s1は全て小文字
s2には大文字が含まれる