Namespaces
Variants
Views
Actions

std::iscntrl(std::locale)

From cppreference.com
< cpp‎ | locale
 
 
Localizations library
Locales and facets
Locales
Facet category base classes
ctype facets
numeric facets
collate facets
time facets
monetary facets
messages facets
Character classification and conversion
Character classification
Conversions
(C++11/17*)
(C++11/17*)
Code conversion facets
(C++11/17/26*)
(C++11/17/26*)    
(C++11/17/26*)
(C++11/17/26*)
C locale
Text encoding identifications
 
Defined in header <locale>
template< class CharT >
bool iscntrl( CharT ch, const locale& loc );

Checks if the given character is classified as a control character by the given locale's std::ctype facet.

Contents

[edit] Parameters

ch - character
loc - locale

[edit] Return value

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

[edit] Possible implementation

template<class CharT>
bool iscntrl(CharT ch, const std::locale& loc)
{
    return std::use_facet<std::ctype<CharT>>(loc).is(std::ctype_base::cntrl, ch);
}

[edit] Example

Demonstrates the use of iscntrl() with different locales (OS-specific).

#include <iostream>
#include <locale>
 
int main()
{
    const wchar_t CCH = L'\u0094'; // Destructive Backspace in Unicode
 
    std::locale loc1("C");
    std::cout << "iscntrl(CCH, C locale) returned "
              << std::boolalpha << std::iscntrl(CCH, loc1) << '\n';
 
    std::locale loc2("en_US.UTF8");
    std::cout << "iscntrl(CCH, Unicode locale) returned "
              << std::boolalpha << std::iscntrl(CCH, loc2) << '\n';
}

Possible output:

iscntrl(CCH, C locale) returned false
iscntrl(CCH, Unicode locale) returned true

[edit] See also

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