std::toupper
Min standard notice:
Header: <cctype>
Converts the given character to uppercase according to the character conversion rules defined by the currently installed C locale.
# Declarations
int toupper( int ch );
# Parameters
ch: character to be converted. If the value of ch is not representable as unsigned char and does not equal EOF, the behavior is undefined.
# Return value
Converted character or ch if no uppercase version is defined by the current C locale.
# Notes
Like all other functions from
Similarly, they should not be directly used with standard algorithms when the iterator’s value type is char or signed char. Instead, convert the value to unsigned char first:
# Example
#include <cctype>
#include <climits>
#include <clocale>
#include <iostream>
#include <ranges>
int main()
{
for (auto bd{0}; unsigned char lc : std::views::iota(0, UCHAR_MAX))
if (unsigned char uc = std::toupper(lc); uc != lc)
std::cout << lc << uc << (13 == ++bd ? '\n' : ' ');
std::cout << "\n\n";
unsigned char 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';
}