GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::ctype::narrow,do_narrow(3) C++ Standard Libary std::ctype::narrow,do_narrow(3)

std::ctype::narrow,do_narrow - std::ctype::narrow,do_narrow


Defined in header <locale>
public: (1)
char narrow( CharT c, char dflt ) const;
public:


const CharT* narrow( const CharT* beg, const CharT* end, (2)


char dflt, char* dst ) const;
protected: (3)
virtual char do_narrow( CharT c, char dflt ) const;
protected:


virtual const CharT* do_narrow( const CharT* beg, const CharT* end, (4)


char dflt, char* dst ) const;


1,2) Public member function, calls the protected virtual member function do_narrow
of the most derived class.
3) Converts the (possibly wide) character c to multibyte representation if the
character can be represented with a single byte (for example, ASCII characters in
UTF-8 encoding are single bytes). Returns dflt if such conversion does not exist.
4) For every character in the character array [beg, end), writes narrowed characters
(or dflt whenever narrowing fails) to the successive locations in the character
array pointed to by dst.


Narrowing is always successful and is always reversible (by calling widen()) for all
characters from the
basic source character set
(until C++23)
basic character set
(since C++23).


Narrowing, if successful, preserves all character classification categories known to
is().


Narrowing of any digit character guarantees that if the result is subtracted from
the character literal '0', the difference equals the digit value of the original
character.


c - character to convert
dflt - default value to produce if the conversion fails
beg - pointer to the first character in an array of characters to convert
end - one past the end pointer for the array of characters to convert
dst - pointer to the first element of the array of char to fill


1,3) narrowed character or dflt if narrowing fails
2,4) end

// Run this code


#include <locale>
#include <iostream>


void try_narrow(const std::ctype<wchar_t>& f, wchar_t c)
{
char n = f.narrow(c, 0);
if (n) {
std::wcout << '\'' << c << "' narrowed to " << +(unsigned char)n << '\n';
} else {
std::wcout << '\'' << c << "' could not be narrowed\n";
}
}


int main()
{
std::locale::global(std::locale("en_US.utf8"));
std::wcout.imbue(std::locale());
std::wcout << std::hex << std::showbase << "In US English UTF-8 locale:\n";
auto& f = std::use_facet<std::ctype<wchar_t>>(std::locale());
try_narrow(f, L'A');
try_narrow(f, L'A');
try_narrow(f, L'ě');


std::locale::global(std::locale("cs_CZ.iso88592"));
auto& f2 = std::use_facet<std::ctype<wchar_t>>(std::locale());
std::wcout << "In Czech ISO-8859-2 locale:\n";
try_narrow(f2, L'A');
try_narrow(f2, L'A');
try_narrow(f2, L'ě');
}


In US English UTF-8 locale:
'A' narrowed to 0x41
'A' could not be narrowed
'ě' could not be narrowed
In Czech ISO-8859-2 locale:
'A' narrowed to 0x41
'A' could not be narrowed
'ě' narrowed to 0xec


widen invokes do_widen
(public member function)
narrow narrows characters
(public member function of std::basic_ios<CharT,Traits>)
wctob narrows a wide character to a single-byte narrow character, if possible
(function)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.