std::wstring_convert<Codecvt,Elem,Wide_alloc,Byte_alloc>::from_bytes
From cppreference.com
< cpp | locale | wstring convert
Defined in header <locale>
|
||
wide_string from_bytes( char byte ); |
(1) | |
wide_string from_bytes( const char* ptr ); |
(2) | |
wide_string from_bytes( const byte_string& str ); |
(3) | |
wide_string from_bytes( const char* first, const char* last ); |
(4) | |
Converts a byte sequence to a wide string using the facet pointed to by cvtptr
.
1) The byte sequence only consists of one element byte.
2) The byte sequence is the null-terminated sequence beginning at ptr.
3) The byte sequence is the sequence contained in str.
4) The byte sequence is the range
[
first,
last)
.Before the conversion begins, if *this was not constructed with constructor overload (3), cvtstate
will be set to its default value (the initial conversion state).
The number of input elements successfully converted will be stored in cvtcount
.
Return value
If the conversion succeeds, returns the conversion result. Otherwise, if *this is constructed with constructor overload (4), returns wide_err_string
.
Exceptions
If the conversion fails and *this was not constructed with constructor overload (4), throws std::range_error.
Example
Run this code
#include <codecvt> #include <cstdint> #include <iostream> #include <locale> #include <string> int main() { std::string utf8 = "z\u00df\u6c34\U0001d10b"; // or u8"zß水𝄋" // or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9d\x84\x8b"; // the UTF-8 / UTF-16 standard conversion facet std::u16string utf16 = std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t>{}.from_bytes(utf8.data()); std::cout << "UTF-16 conversion produced " << utf16.size() << " code units: " << std::showbase; for (char16_t c : utf16) std::cout << std::hex << static_cast<std::uint16_t>(c) << ' '; // the UTF-8 / UTF-32 standard conversion facet std::u32string utf32 = std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t>{}.from_bytes(utf8); std::cout << "\nUTF-32 conversion produced " << std::dec << utf32.size() << " code units: "; for (char32_t c : utf32) std::cout << std::hex << static_cast<std::uint32_t>(c) << ' '; std::cout << '\n'; }
Output:
UTF-16 conversion produced 5 code units: 0x7a 0xdf 0x6c34 0xd834 0xdd0b UTF-32 conversion produced 4 code units: 0x7a 0xdf 0x6c34 0x1d10b
See also
converts a wide string into a byte string (public member function) | |
converts a narrow multibyte character string to wide string, given state (function) | |
[virtual] |
converts a string from ExternT to InternT , such as when reading from file (virtual protected member function of std::codecvt<InternT,ExternT,StateT> ) |