Namespaces
Variants

std:: isspace

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

Проверяет, является ли данный символ пробельным символом согласно классификации текущей установленной локали C. В локали по умолчанию пробельными символами являются следующие:

  • пробел ( 0x20 , ' ' )
  • перевод страницы ( 0x0c , ' \f ' )
  • перевод строки ( 0x0a , ' \n ' )
  • возврат каретки ( 0x0d , ' \r ' )
  • горизонтальная табуляция ( 0x09 , ' \t ' )
  • вертикальная табуляция ( 0x0b , ' \v ' )

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

Содержание

Параметры

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

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

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

Примечания

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

bool my_isspace(char ch)
{
    return std::isspace(static_cast<unsigned char>(ch));
}

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

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

Пример

#include <cctype>
#include <climits>
#include <iomanip>
#include <iostream>
int main(void)
{
    std::cout << std::hex << std::setfill('0') << std::uppercase;
    for (int ch{}; ch <= UCHAR_MAX; ++ch)
        if (std::isspace(ch))
            std::cout << std::setw(2) << ch << ' ';
    std::cout << '\n';
}

Вывод:

09 0A 0B 0C 0D 20

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

проверяет, классифицируется ли символ как пробельный в данной локали
(шаблон функции)
проверяет, является ли широкий символ пробельным символом
(функция)
**Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Числовые диапазоны (33–47) не требуют перевода - Весь текст находится внутри тегов ` `, которые согласно инструкции не переводятся - Символы `–` являются разделителями диапазонов - Специальные обозначения `≠0` являются математическими символами Все HTML-теги и атрибуты сохранены в оригинальном виде. **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода - все содержимое состоит из числовых значений, шестнадцатеричных кодов, символов и HTML-тегов. Согласно инструкциям: - HTML-теги и атрибуты не переводились - Текст внутри тегов ` ` не переводился - C++ специфические термины отсутствуют - Сохранено исходное форматирование **Примечание:** В данном HTML-фрагменте не содержится текста для перевода, требующего локализации на русский язык. Все элементы представляют собой: - Числовые диапазоны (58–64) - Специальные символы и escape-последовательности в тегах ` ` - Числовые значения (0) и математические обозначения (≠0) - HTML-разметку и атрибуты Согласно требованиям, HTML-теги, атрибуты и содержимое тегов ` ` не подлежат переводу. **Примечание:** В данном HTML-фрагменте переводить нечего, так как: - Числовые диапазоны (65–70) не требуют перевода - Весь текст внутри тегов ` ` сохранен без изменений - HTML-теги и атрибуты сохранены в оригинале - Специфические C++ термины и escape-последовательности не переведены - Форматирование полностью сохранено **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода - все содержимое состоит из числовых значений, шестнадцатеричных кодов, символов и HTML-разметки, которые согласно инструкциям не подлежат переводу. **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода, требующий локализации на русский язык. Все содержимое состоит из: - HTML-тегов и атрибутов (сохранены без изменений) - Числовых значений и шестнадцатеричных кодов внутри тегов ` ` (не подлежат переводу) - Символов и математических обозначений (сохранены в оригинале) Форматирование и структура таблицы полностью сохранены. **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Числовые значения (103–122) не требуют перевода - Содержимое внутри тегов ` ` сохраняется без изменений согласно инструкциям - Символы `–` и `≠` являются математическими символами, а не текстом для перевода - HTML-теги и атрибуты сохранены в оригинальном виде **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода, требующий локализации на русский язык. Все содержимое состоит из: - HTML-тегов и атрибутов (сохранены без изменений) - Числовых значений и диапазонов - Символьных кодов в тегах ` ` (не подлежат переводу) - Специальных символов и математических обозначений Форматирование и структура полностью сохранены в соответствии с требованиями.
Значения 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