| Localization library | |||||||||||||||||||||||||
| Regular expressions library(C++11) | |||||||||||||||||||||||||
| Formatting library(C++20) | |||||||||||||||||||||||||
| Null-terminated sequence utilities | |||||||||||||||||||||||||
| Byte strings | |||||||||||||||||||||||||
| Multibyte strings | |||||||||||||||||||||||||
| Wide strings | |||||||||||||||||||||||||
| Primitive numeric conversions | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
| Text encoding identifications | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
| Functions | ||||||||||||||||||||||||||||||||||||
| Character classification | ||||||||||||||||||||||||||||||||||||
| Character manipulation | ||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||
| Conversions to numeric formats | ||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||
| String manipulation | ||||||||||||||||||||||||||||||||||||
| String examination | ||||||||||||||||||||||||||||||||||||
| Character array functions | ||||||||||||||||||||||||||||||||||||
| Miscellaneous | ||||||||||||||||||||||||||||||||||||
Defined in header <cctype> | ||
int toupper(int ch); | ||
Converts the given character to uppercase according to the character conversion rules defined by the currently installed C locale.
In the default"C" locale, the following lowercase lettersabcdefghijklmnopqrstuvwxyz are replaced with respective uppercase lettersABCDEFGHIJKLMNOPQRSTUVWXYZ.
Contents |
| ch | - | character to be converted. If the value ofch is not representable asunsignedchar and does not equalEOF, the behavior is undefined. |
Converted character orch if no uppercase version is defined by the current C locale.
Like all other functions from<cctype>, the behavior ofstd::toupper is undefined if the argument's value is neither representable asunsignedchar nor equal toEOF. To use these functions safely with plainchars (orsignedchars), the argument should first be converted tounsignedchar:
char my_toupper(char ch){returnstatic_cast<char>(std::toupper(static_cast<unsignedchar>(ch)));}
Similarly, they should not be directly used with standard algorithms when the iterator's value type ischar orsignedchar. Instead, convert the value tounsignedchar first:
std::string str_toupper(std::string s){std::transform(s.begin(), s.end(), s.begin(),// static_cast<int(*)(int)>(std::toupper) // wrong// [](int c){ return std::toupper(c); } // wrong// [](char c){ return std::toupper(c); } // wrong[](unsignedchar c){return std::toupper(c);}// correct);return s;}
#include <cctype>#include <climits>#include <clocale>#include <iostream>#include <ranges> int main(){for(auto bd{0};unsignedchar lc: std::views::iota(0,UCHAR_MAX))if(unsignedchar uc= std::toupper(lc); uc!= lc)std::cout<< lc<< uc<<(13==++bd?'\n':' ');std::cout<<"\n\n"; unsignedchar c='\xb8';// the character ž in ISO-8859-15// but ¸ (cedilla) in ISO-8859-1 std::setlocale(LC_ALL,"en_US.iso88591");std::cout<<std::hex<<std::showbase;std::cout<<"in iso8859-1, toupper('0xb8') gives "<< std::toupper(c)<<'\n';std::setlocale(LC_ALL,"en_US.iso885915");std::cout<<"in iso8859-15, toupper('0xb8') gives "<< std::toupper(c)<<'\n';}
Output:
aA bB cC dD eE fF gG hH iI jJ kK lL mMnN oO pP qQ rR sS tT uU vV wW xX yY zZ in iso8859-1, toupper('0xb8') gives 0xb8in iso8859-15, toupper('0xb8') gives 0xb4| converts a character to lowercase (function)[edit] | |
| converts a character to uppercase using the ctype facet of a locale (function template)[edit] | |
| converts a wide character to uppercase (function)[edit] | |
C documentation fortoupper | |
| 1. | ISO/IEC 8859-1. From Wikipedia. |
| 2. | ISO/IEC 8859-15. From Wikipedia. |