25 Localization library [localization]

25.4 Standard locale categories [locale.categories]

25.4.1 The ctype category [category.ctype]

25.4.1.1 Class template ctype [locale.ctype]

25.4.1.1.2 ctype virtual functions [locale.ctype.virtuals]

bool do_is(mask m, charT c) const; const charT* do_is(const charT* low, const charT* high, mask* vec) const;

Effects: Классифицирует символ или последовательность символов. Для каждого символа аргумента определяет значение M типа ctype_­base​::​mask. Вторая форма определяет значение M типа ctype_­base​::​mask для каждого *p where (low <= p && p < high)и помещает его в vec[p - low].

Returns: Первая форма возвращает результат выражения (M & m) != 0; то есть, true если персонаж имеет указанные характеристики. Вторая форма возвращается high.

const charT* do_scan_is(mask m, const charT* low, const charT* high) const;

Effects: Находит в буфере символ, соответствующий классификации m.

Returns: Наименьший указатель p в диапазоне [low, high) , который is(m, *p) будет возвращать true; в противном случае возвращается high.

const charT* do_scan_not(mask m, const charT* low, const charT* high) const;

Effects: Находит в буфере символ, не соответствующий классификации m.

Returns: Наименьший указатель p, если таковой имеется, в диапазоне [low, high) , который is(m, *p) может возвращать false; в противном случае возвращается high.

charT do_toupper(charT c) const; const charT* do_toupper(charT* low, const charT* high) const;

Effects: Преобразует символ или символы в верхний регистр. Вторая форма заменяет каждый символ *p в диапазоне, [low, high) для которого существует соответствующий символ верхнего регистра, этим символом.

Returns: Первая форма возвращает соответствующий символ верхнего регистра, если известно, что он существует, или его аргумент, если нет. Вторая форма возвращается high.

charT do_tolower(charT c) const; const charT* do_tolower(charT* low, const charT* high) const;

Effects: Преобразует символ или символы в нижний регистр. Вторая форма заменяет каждый символ *p в диапазоне, [low, high) для которого существует соответствующий символ нижнего регистра, на этот символ.

Returns: Первая форма возвращает соответствующий символ нижнего регистра, если известно, что он существует, или его аргумент, если нет. Вторая форма возвращается high.

charT do_widen(char c) const; const char* do_widen(const char* low, const char* high, charT* dest) const;

Effects: Применяет простейшее разумное преобразование char значения или последовательности char значений в соответствующее charT значение или значения.233 Единственные символы, для которых требуются уникальные преобразования, - это символы в basic source character set.

Для любого имени ctype категории с ctype <charT> фаской ctc и действительным ctype_­base​::​mask значением M, (ctc.​is(M, c) || !is(M, do_­widen(c)) ) является true.234

Вторая форма преобразует каждый символ *p в диапазоне [low, high), помещая результат в dest[p - low].

Returns: Первая форма возвращает преобразованное значение. Вторая форма возвращается high.

char do_narrow(charT c, char dfault) const; const charT* do_narrow(const charT* low, const charT* high, char dfault, char* dest) const;

Effects: Применяет простейшее разумное преобразование charT значения или последовательности charT значений в соответствующее char значение или значения.

Для любого символа c в basic source character set преобразовании таково, что

do_widen(do_narrow(c, 0)) == c

Для любого имени ctype категории с ctype<char> фаской ctc однако, и ctype_­base​::​mask значением M,

(is(M, c) || !ctc.is(M, do_narrow(c, dfault)) )

есть true (если не do_­narrow возвращается dfault). Кроме того, для любого цифрового символа cвыражение (do_­narrow(c, dfault) - '0') оценивается как цифровое значение символа. Вторая форма преобразует каждый символ *p в диапазоне [low, high), помещая результат (или, dfault если простое преобразование недоступно) в dest[p - low].

Returns: Первая форма возвращает преобразованное значение; или dfault если нет доступного отображения. Вторая форма возвращается high.

Аргумент char do_­widen предназначен для приема значений, полученных из символьных литералов, для преобразования в кодировку языкового стандарта.

Другими словами, преобразованный символ не является членом какой-либо классификации символов, которая c также не является членом.