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には大文字が含まれる