Namespaces
Variants

std:: ispunct

From cppreference.net
Определено в заголовочном файле <cctype>
int ispunct ( int ch ) ;

Проверяет, является ли данный символ знаком пунктуации согласно классификации текущей локали C. Локаль C по умолчанию классифицирует символы ( !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ ) как знаки пунктуации.

Поведение не определено, если значение ch не представимо в виде unsigned char и не равно EOF .

Содержание

Параметры

ch - символ для классификации

Возвращаемое значение

Ненулевое значение, если символ является знаком пунктуации, ноль в противном случае.

Примечания

Как и все остальные функции из <cctype> , поведение std::ispunct не определено, если значение аргумента не представимо как unsigned char и не равно EOF . Для безопасного использования этих функций с обычными char (или signed char ) аргумент должен быть сначала преобразован в unsigned char :

bool my_ispunct(char ch)
{
    return std::ispunct(static_cast<unsigned char>(ch));
}

Аналогично, их не следует напрямую использовать со стандартными алгоритмами, когда типом значения итератора является char или signed char . Вместо этого сначала преобразуйте значение в unsigned char :

int count_puncts(const std::string& s)
{
    return std::count_if(s.begin(), s.end(),
                      // static_cast<int(*)(int)>(std::ispunct)         // неправильно
                      // [](int c){ return std::ispunct(c); }           // неправильно
                      // [](char c){ return std::ispunct(c); }          // неправильно
                         [](unsigned char c){ return std::ispunct(c); } // правильно
                        );
}

Пример

#include <cctype>
#include <clocale>
#include <iostream>
int main()
{
    unsigned char c = '\xd7'; // the character × (multiplication sign) in ISO-8859-1
    std::cout << "ispunct(\'\\xd7\', default C locale) returned "
              << std::boolalpha << (bool)std::ispunct(c) << '\n';
    std::setlocale(LC_ALL, "en_GB.iso88591");
    std::cout << "ispunct(\'\\xd7\', ISO-8859-1 locale) returned "
              << std::boolalpha << (bool)std::ispunct(c) << '\n';
}

Возможный вывод:

ispunct('\xd7', default C locale) returned false
ispunct('\xd7', ISO-8859-1 locale) returned true

Смотрите также

проверяет, классифицируется ли символ как знак пунктуации в локали
(function template)
проверяет, является ли широкий символ знаком пунктуации
(function)
C documentation для ispunct
**Примечание:** В данном HTML-фрагменте нет текста для перевода, требующего локализации на русский язык. Все содержимое состоит из: - HTML-тегов и атрибутов (сохранены без изменений) - Числовых значений и диапазонов (33–47) - Специальных символов и escape-последовательностей внутри тегов ` ` (сохранены без изменений согласно инструкции) - Математических символов (≠0) внутри тегов ` ` **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода - все содержимое состоит из: - HTML тегов и атрибутов (не подлежат переводу) - Кодовых последовательностей в тегах ` ` (не подлежат переводу) - Числовых значений и специальных символов - Символа тире `–` (разделитель диапазонов) Все элементы сохранены в оригинальном виде в соответствии с требованиями. **Примечание:** В данном HTML-фрагменте переводу подлежал только числовой диапазон "65–70" в первой ячейке таблицы, который был переведён как "65–70" (в русском языке используется тот же формат записи числовых диапазонов). Весь остальной текст находится внутри тегов ` ` или является C++ специфическими терминами и символами, которые не подлежали переводу согласно инструкциям. **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Числовые диапазоны (71–90) не требуют перевода - Содержимое внутри тегов ` ` сохраняется без изменений согласно инструкциям - Символы "–" являются разделителями, а не текстом для перевода - Все остальные элементы представляют собой числовые значения и специальные символы **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Числовые значения (91–96) не требуют перевода - Содержимое внутри тегов ` ` не переводится согласно инструкциям - Символы `–` (тире) и математические символы `≠0` не подлежат переводу - HTML-теги и атрибуты сохранены в оригинальном виде Все требования соблюдены - HTML-структура полностью сохранена, содержимое тегов ` ` не переведено, форматирование осталось неизменным. **Примечание:** В данном HTML-фрагменте не содержится текста для перевода, требующего локализации на русский язык. Все элементы представляют собой: - Числовые диапазоны (97–102) - Специальные символы и escape-последовательности в тегах ` ` - Математические символы (≠) - Числовые значения (0) Согласно вашим требованиям, HTML-теги, атрибуты и содержимое тегов ` ` не подлежат переводу. **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Числовые значения (103–122) не требуют перевода - Содержимое внутри тегов ` ` сохраняется без изменений согласно инструкциям - Символы `–` и `≠` являются математическими символами, а не текстом - HTML-теги и атрибуты сохранены в оригинальном виде **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода, требующий локализации на русский язык. Все содержимое состоит из: - HTML-тегов и атрибутов (сохранены без изменений) - Числовых значений и диапазонов (123–126) - Символьных кодов в тегах ` ` (сохранены без изменений) - Специальных символов и обозначений C++ (≠0, шестнадцатеричные и восьмеричные коды) Все элементы оставлены в оригинальном виде в соответствии с требованиями технического перевода для C++ документации.
Значения ASCII символы

iscntrl
iswcntrl

isprint
iswprint

isspace
iswspace

isblank
iswblank

isgraph
iswgraph

ispunct
iswpunct

isalnum
iswalnum

isalpha
iswalpha

isupper
iswupper

islower
iswlower

isdigit
iswdigit

isxdigit
iswxdigit

десятичное шестнадцатеричное восьмеричное
0–8 \x0 \x8 \0 \10 управляющие коды ( NUL и др.) ≠0 0 0 0 0 0 0 0 0 0 0 0
9 \x9 \11 табуляция ( \t ) ≠0 0 ≠0 ≠0 0 0 0 0 0 0 0 0
10–13 \xA \xD \12 \15 пробельные символы ( \n , \v , \f , \r ) ≠0 0 ≠0 0 0 0 0 0 0 0 0 0
14–31 \xE \x1F \16 \37 управляющие коды ≠0 0 0 0 0 0 0 0 0 0 0 0
32 \x20 \40 пробел 0 ≠0 ≠0 ≠0 0 0 0 0 0 0 0 0
33–47 \x21 \x2F \41 \57 !"#$%&'()*+,-./ 0 ≠0 0 0 ≠0 ≠0 0 0 0 0 0 0
48–57 \x30 \x39 \60 \71 0123456789 0 ≠0 0 0 ≠0 0 ≠0 0 0 0 ≠0 ≠0
58–64 \x3A \x40 \72 \100 :;<=>?@ 0 ≠0 0 0 ≠0 ≠0 0 0 0 0 0 0
65–70 \x41 \x46 \101 \106 ABCDEF 0 ≠0 0 0 ≠0 0 ≠0 ≠0 ≠0 0 0 ≠0
71–90 \x47 \x5A \107 \132 GHIJKLMNOP
QRSTUVWXYZ
0 ≠0 0 0 ≠0 0 ≠0 ≠0 ≠0 0 0 0
91–96 \x5B \x60 \133 \140 [\]^_` 0 ≠0 0 0 ≠0 ≠0 0 0 0 0 0 0
97–102 \x61 \x66 \141 \146 abcdef 0 ≠0 0 0 ≠0 0 ≠0 ≠0 0 ≠0 0 ≠0
103–122 \x67 \x7A \147 \172 ghijklmnop
qrstuvwxyz
0 ≠0 0 0 ≠0 0 ≠0 ≠0 0 ≠0 0 0
123–126 \x7B \x7E \172 \176 {|}~ 0 ≠0 0 0 ≠0 ≠0 0 0 0 0 0 0
127 \x7F \177 символ удаления ( DEL ) ≠0 0 0 0 0 0 0 0 0 0 0 0