×
Traktatov.net » Язык программирования C++. Пятое издание » Читать онлайн
Страница 77 из 714 Настройки
— печатаемый символ
>ispunct(с)Возвращает значение >true, если — знак пунктуации (т.е. символ, который не является управляющим символом, цифрой, символом или печатаемым отступом)
>isspace(с)Возвращает значение >true, если — символ отступа (т.е. пробел, табуляция, вертикальная табуляция, возврат, новая строка или прогон страницы)
>isupper(с)Возвращает значение >true, если — символ в верхнем регистре
>isxdigit(с)Возвращает значение >true, если — шестнадцатеричная цифра
>tolower(с)Если — прописная буква, возвращает ее эквивалент в нижнем регистре, в противном случае возвращает символ с неизменным
>toupper(с)Если — строчная буква, возвращает ее эквивалент в верхнем регистре, в противном случае возвращает символ с неизменным
Совет. Используйте версии С++ библиотечных заголовков языка С

Кроме средств, определенных специально для языка С++, его библиотека содержит также библиотеку языка С. Имена заголовков языка С имеют формат >имя.h. Версии этих же заголовков языка С++ имеют формат >cимя, т.е. суффикс >.h удален, а >имени предшествует символ , означающий, что этот заголовок принадлежит библиотеке С.

Следовательно, у заголовка >cctype то же содержимое, что и у заголовка >ctype.h, но в форме, соответствующей программе С++. В частности, имена, определенные в заголовках с имя, определены также в пространстве имен >std, тогда как имена, определенные в заголовках >.h, — нет.

Как правило, в программах на языке С++ используют заголовки версии >cимя, а не >имя.h. Таким образом, имена из стандартной библиотеки будут быстро найдены в пространстве имен >std. Использование заголовка >.h возлагает на программиста дополнительную заботу по отслеживанию, какие из библиотечных имен унаследованы от языка С, а какие принадлежат языку С++.

Обработка каждого символа, использование серийного оператора >for

Если необходимо сделать нечто с каждым символом в строке, то наилучшим подходом является использование оператора, введенного новым стандартом, — серийный оператор>for (range >for). Этот оператор перебирает элементы данной ему последовательности и выполняет с каждым из них некую операцию. Его синтаксическая форма такова:

>for (объявление : выражение)

оператор

где >выражение — это объект типа, который представляет последовательность, а >объявление определяет переменную, которая будет использована для доступа к элементам последовательности. На каждой итерации переменная в >объявлении инициализируется значением следующего элемента в >выражении.

Строка представляет собой последовательность символов, поэтому объект типа >string можно использовать как >выражение в серийном операторе >for. Например, серийный оператор >for можно использовать для вывода каждого символа строки в отдельной строке вывода.

>string str("some string");

>// вывести символы строки str по одному на строку

>for (auto с : str)  // для каждого символа в строке str

> cout << с << endl; // вывести текущий символ и символ новой строки

Цикл >for ассоциирует переменную с переменной >str типа >string. Управляющая переменная цикла определяется тем же способом, что и любая другая переменная. В данном случае используется спецификатор