2018年03月11日
《その329》 文字の判別・変換
文字の判別・変換 <cctype>ヘッダ
数字文字の判別
int isdigit(int c);
数字文字であれば 非0、それ以外ならば 0 を返します。
英文字の判別
int isalpha(int c);
英文字であれば 非0、それ以外ならば 0 を返します。
小文字の判別
int islower(int c);
小文字であれば 非0、それ以外ならば 0 を返します。
大文字の判別
int isupper(int c);
大文字であれば 非0、それ以外ならば 0 を返します。
小文字への変換
int tolower(int c);
大文字を受け取った場合は小文字に変換した値を返却。
小文字を受け取った場合は受け取った文字をそのまま返却。
返却値は char型ではなく int型なので、場合によってはキャストが必要です。
大文字への変換
int toupper(int c);
小文字を受け取った場合は大文字に変換した値を返却。
大文字を受け取った場合は受け取った文字をそのまま返却。
返却値は char型ではなく int型なので、場合によってはキャストが必要です。
#include <cctype>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
struct d {
char operator()(char c) {
cout << "文字 " << c << "は、";
if (isdigit(c)) {
cout << "数字文字です。\n";
return c;
}
else if (isalpha(c) && islower(c)) {
cout << "英小文字です。大文字は "
<< (char)toupper(c)
<< " です。\n";
return toupper(c);
}
else if (isalpha(c) && isupper(c)) {
cout << "英大文字です。小文字は "
<< (char)tolower(c)
<< " です。\n";
return tolower(c);
}
else {
cout << "その他です。\n";
return c;
}
}
};
int main() {
string str0("Ab%1yZ");
string str1(str0);
cout << str0 << " についての情報\n\n";
transform(
str0.begin(),
str0.end(),
str1.begin(),
d()
);
cout << "\n英大文字/小文字 の反転結果\n"
<< str1 << '\n';
}
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7420598
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック