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::wstring_convert::to_bytes(3) C++ Standard Libary std::wstring_convert::to_bytes(3)

std::wstring_convert::to_bytes - std::wstring_convert::to_bytes


Defined in header <locale>
byte_string to_bytes( Elem wchar ); (1)
byte_string to_bytes( const Elem* wptr ); (2)
byte_string to_bytes( const wide_string& wstr ); (3)
byte_string to_bytes( const Elem* first, const Elem* last); (4)


Performs wide to multibyte conversion, using the codecvt facet supplied at
construction.


1) Converts wchar as if it was a string of length 1, to byte_string.
2) Converts the null-terminated wide character sequence beginning at the wide
character pointed to by wptr, to byte_string.
3) Converts the wide string str to byte_string.
4) Converts the wide character sequence [first, last) to byte_string.


In all cases, the conversion begins in initial shift state, unless non-initial
starting state was provided to this wstring_convert constructor. The number of
characters converted and the final value of the conversion state are remembered and
can be accessed with state() and converted()


A byte_string object containing the results of the wide to multibyte conversion. If
the conversion failed and there was a user-supplied byte-error string provided to
the constructor of this wstring_convert, returns that byte-error string.


If this wstring_convert object was constructed without a user-supplied byte-error
string, throws std::range_error on conversion failure.

// Run this code


#include <iostream>
#include <string>
#include <locale>
#include <codecvt>
#include <iomanip>


// utility function for output
void hex_print(const std::string& s)
{
std::cout << std::hex << std::setfill('0');
for(unsigned char c : s)
std::cout << std::setw(2) << static_cast<int>(c) << ' ';
std::cout << std::dec << '\n';
}


int main()
{
// wide character data
std::wstring wstr = L"z\u00df\u6c34\U0001f34c"; // or L"zß水🍌"


// wide to UTF-8
std::wstring_convert<std::codecvt_utf8<wchar_t>> conv1;
std::string u8str = conv1.to_bytes(wstr);
std::cout << "UTF-8 conversion produced " << u8str.size() << " bytes:\n";
hex_print(u8str);


// wide to UTF-16le
std::wstring_convert<std::codecvt_utf16<wchar_t, 0x10ffff, std::little_endian>> conv2;
std::string u16str = conv2.to_bytes(wstr);
std::cout << "UTF-16le conversion produced " << u16str.size() << " bytes:\n";
hex_print(u16str);
}


UTF-8 conversion produced 10 bytes:
7a c3 9f e6 b0 b4 f0 9f 8d 8c
UTF-16le conversion produced 10 bytes:
7a 00 df 00 34 6c 3c d8 4c df


from_bytes converts a byte string into a wide string
(public member function)
wcsrtombs converts a wide string to narrow multibyte character string, given state
(function)
do_out converts a string from internT to externT, such as when writing to file
[virtual] (virtual protected member function of
std::codecvt<InternT,ExternT,State>)

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.