# std::toupper(std::locale)

From cppreference.com
< cpp‎ | locale

Defined in header `<locale>` |  |
template< class charT > charT toupper( charT ch, const locale& loc ); |  |

Converts the character `ch` to uppercase if possible, using the conversion rules specified by the given locale's std::ctype facet.

### Parameters

ch | - | character
loc | - | locale

### Return value

Returns the uppercase form of `ch` if one is listed in the locale, otherwise returns `ch` unchanged.

### Notes

Only 1:1 character mapping can be performed by this function, e.g. the uppercase form of 'ß' is (with some exceptions) the two-character string "SS", which cannot be obtained by std::toupper.

### Possible implementation

    template< class charT >
    charT toupper( charT ch, const std::locale& loc ) {
        return std::use_facet<std::ctype<charT>>(loc).toupper(ch);
    }

### Example

Run this code

    #include <iostream>
    #include <cwctype>
    #include <locale>

    int main()
    {
        wchar_t c = L'\u017f'; // Latin small letter Long S ('ſ')

        std::cout << std::hex << std::showbase;

        std::cout << "in the default locale, toupper(" << (std::wint_t)c << ") = "
                  << std::toupper(c, std::locale()) << '\n';

        std::cout << "in Unicode locale, toupper(" << (std::wint_t)c << ") = "
                  << std::toupper(c, std::locale("en_US.utf8")) << '\n';
    }

Output:

    in the default locale, toupper(0x17f) = 0x17f
    in Unicode locale, toupper(0x17f) = 0x53

### See also

tolower(std::locale) | converts a character to lowercase using the ctype facet of a locale (function template)
toupper | converts a character to uppercase (function)
towupper | converts a wide character to uppercase (function)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/locale/toupper&oldid=87177"