Бьерн Страуструп.
Язык программирования С++
263
int isalpha(char)
// 'a'..'z' 'A'..'Z'
int isupper(char)
// 'A'..'Z'
int islower(char)
// 'a'..'z'
int isdigit(char)
// '0'..'9'
int isxdigit(char)
// '0'..'9' 'a'..'f' 'A'..'F'
int isspace(char)
// ' ' '\
t' возвращает конец строки
// и перевод формата
int iscntrl(char)
// управляющий символ в диапазоне
// (ASCII 0..31 и 127)
int ispunct(char)
// знак пунктуации, отличен от
// приведенных выше
int isalnum(char)
// isalpha() | isdigit()
int isprint(char)
//
видимый: ascii ' '..'~'
int isgraph(char)
// isalpha() | isdigit() | ispunct()
int isascii(char c) { return 0<=c && c<=127; }
Все они, кроме isascii(), работают с помощью простого просмотра, используя символ как индекс в
таблице атрибутов символов. Поэтому вместо выражения типа
(('a'<=c && c<='z') || ('A'<=c && c<='Z')) // буква
которое не только утомительно писать, но оно может быть и ошибочным (на машине с кодировкой
EBCDIC оно задает не только буквы), лучше использовать вызов стандартной функции isalpha(),
который к тому же более эффективен. В качестве примера приведем функцию eatwhite(), которая читает
из потока обобщенные пробелы:
istream& eatwhite(istream& is)
{
char
c;
while (is.get(c)) {
if
(isspace(c)==0)
{
is.putback(c);
break;
}
}
return
is;
}
В ней используется функция putback(), которая возвращает символ в поток, и он становится первым
подлежащим чтению.
Достарыңызбен бөлісу: