Часто необходимо иметь дело с индивидуальными символами строки. Например, выяснить какой именно символ присутствует, является ли он пробелом и т.д.

Для этих целей в С++ определен заголовок cctype, содержащий функции для работы с символами строки.

Функции Объяснение
isalnum(s) Возвращает значение true, если s является буквой или цифрой
isalpha(s) Возвращает значение true, если s - буква
iscntrl(s) Возвращает значение true, если s - управляющий символ
isdigit(s) Возвращает значение true, если s - цифра
isgraph(s) Возвращает значение true, если s - не пробел, а печатаемый символ
islower(s) Возвращает значение true, если s - символ в нижнем регистре
isprint(s) Возвращает значение true, если s - печатаемый символ
ispunct(s) Возвращает значение true, если s - знак пунктуации (т.е. символ, который не является управляющим символом, цифрой, буквой или печатаемым отступом)
isspace(s) Возвращает значение true, если s - символ отступа (т.е. пробел, табуляция, вертикальная табуляция, возврат или прогон страницы)
isupper(s) Возвращает значение true, если s - символ в верхнем регистре
isxdigit(s) Возвращает значение true, если s - шестнадцатеричная цифра
tolower(s) Если s - прописная буква, возвращает ее эквивалент в нижнем регистре, в противном случае возвращает символ неизменным
toupper(s) Если s - строчная буква, возвращает ее эквивалент в верхнем регистре, в противном случае возвращает символ неизменным

Поскольку С++ наследует язык С, эти же функции определены в заголовке ctype.h. Имена из cctype определены в пространстве имен std, а имена из ctype.h - нет. Поэтому лучше использовать библиотеки без суффикса h.

Напишем программу, подсчитывающую количество букв, цифр и пробелов в введенной строке.

#include <iostream>
#include <string>
#include <cctype>
using namespace std;

int main()
{ 
 setlocale(LC_ALL, "Russian"); 
 string line;
 getline(cin , line);
 decltype(line.size()) alphaCount = 0, digitCount = 0, spaceCount = 0;
 if (!line.empty()) {
 for (decltype(line.size()) i = 0; i < line.size(); i++) {
 if (isalpha(line[i])) alphaCount++;
 if (isdigit(line[i])) digitCount++;
 if (isspace(line[i])) spaceCount++;
 }
 }
 cout << "Количество:\nБукв: " << alphaCount 
 << "\nЦифр: " << digitCount
 << "\nПробелов: " << spaceCount << endl;
 return 0;
}


 Похожие публикации
2016-01-31 • Просмотров [ 353 ]