std::toupper
Defined in header <cctype>
|
||
int toupper( int ch ); |
||
Преобразует символ в верхний регистр в соответствии с правилами преобразования символов, определённых текущей локалью.
В стандартной локали "C", следующие символы нижнего регистра abcdefghijklmnopqrstuvwxyz
заменяются соответствующими символами верхнего регистра ABCDEFGHIJKLMNOPQRSTUVWXYZ
.
Содержание |
[править] Параметры
ch | — | символ, который необходимо преобразовать. Если значение ch не представляется как unsigned char и не равно EOF, поведение не определено.
|
[править] Возвращаемое значение
Преобразованный символ или ch
, если текущая локаль не определяет преобразование в верхний регистр.
[править] Примечания
Аналогично остальным функциям из <cctype>, поведение std::toupper
не определено, если значение аргумента не представляется как unsigned char и не равно EOF
. Чтобы безопасно использовать эти функции с обычными символами типа char (или signed char), аргумент сначала должен быть приведён к unsigned char:
char my_toupper(char ch) { return std::toupper(static_cast<unsigned char>(ch)); }
Также функции не должны использоваться напрямую со стандартными алгоритмами, если значение итератора имеет тип char или signed char. Вместо этого сначала нужно конвертировать значение к unsigned char:
std::string str_toupper(std::string s) { std::transform(s.begin(), s.end(), s.begin(), // static_cast<int(*)(int)>(std::toupper) // неправильно // [](int c){ return std::toupper(c); } // неправильно // [](char c){ return std::toupper(c); } // неправильно [](unsigned char c){ return std::toupper(c); } // правильно ); return s; }
[править] Пример
#include <iostream> #include <cctype> #include <clocale> int main() { unsigned char c = '\xb8'; // символ ž в ISO-8859-15 // но ¸ (cedilla) в ISO-8859-1 std::setlocale(LC_ALL, "en_US.iso88591"); std::cout << std::hex << std::showbase; std::cout << "в iso8859-1, toupper('0xb8') даёт " << std::toupper(c) << '\n'; std::setlocale(LC_ALL, "en_US.iso885915"); std::cout << "в iso8859-15, toupper('0xb8') даёт " << std::toupper(c) << '\n'; }
Вывод:
в iso8859-1, toupper('0xb8') даёт 0xb8 в iso8859-15, toupper('0xb8') даёт 0xb4
[править] См. также
преобразует символ в нижний регистр Оригинал: converts a character to lowercase Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
переводит символ в верхний регистр, используя фасет ctype данной локали (шаблон функции) | |
преобразует широкий символ в верхний регистр Оригинал: converts a wide character to uppercase Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
Справка по C — toupper
|