< cpp‎ | locale
Localizations library
Locales and facets
Facet category base classes
ctype facets
numeric facets
collate facets
time facets
monetary facets
messages facets
Character classification and conversion
Character classification
Code conversion facets
C locale
Text encoding identifications
Defined in header <locale>
template< class CharT >
bool isupper( CharT ch, const locale& loc );

Checks if the given character is classified as an uppercase alphabetic character by the given locale's std::ctype facet.


[edit] Parameters

ch - character
loc - locale

[edit] Return value

Returns true if the character is classified as uppercase, false otherwise.

[edit] Possible implementation

template<class CharT>
bool isupper(CharT ch, const std::locale& loc)
    return std::use_facet<std::ctype<CharT>>(loc).is(std::ctype_base::upper, ch);

[edit] Example

Demonstrates the use of std::isupper() with different locales (OS-specific).

#include <iostream>
#include <locale>
int main()
    const wchar_t c = L'\u00de'; // LATIN CAPITAL LETTER THORN
    std::locale loc1("C");
    std::cout << std::boolalpha
              << "isupper('Þ', C locale) returned " << std::isupper(c, loc1) << '\n'
              << "islower('Þ', C locale) returned " << std::islower(c, loc1) << '\n';
    std::locale loc2("en_US.UTF8");
    std::cout << "isupper('Þ', Unicode locale) returned "
              << std::isupper(c, loc2) << '\n'
              << "islower('Þ', Unicode locale) returned "
              << std::islower(c, loc2) << '\n';

Possible output:

isupper('Þ', C locale) returned false
islower('Þ', C locale) returned false
isupper('Þ', Unicode locale) returned true
islower('Þ', Unicode locale) returned false

[edit] See also

checks if a character is an uppercase character
(function) [edit]
checks if a wide character is an uppercase character
(function) [edit]