std::wstring_convert<Codecvt,Elem,Wide_alloc,Byte_alloc>:: from_bytes
|
Определено в заголовочном файле
<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) | |
Преобразует последовательность байтов в широкую строку с использованием фасета, на который указывает
cvtptr
.
[
first
,
last
)
.
Перед началом преобразования, если
*
this
был
не
сконструирован с использованием перегрузки конструктора
(3)
,
cvtstate
будет установлен в значение по умолчанию (начальное состояние преобразования).
Количество успешно преобразованных входных элементов будет сохранено в
cvtcount
.
Содержание |
Возвращаемое значение
Если преобразование завершается успешно, возвращает результат преобразования. В противном случае, если
*
this
создан с использованием перегрузки конструктора
(4)
, возвращает
wide_err_string
.
Исключения
Если преобразование завершается неудачей и * this был не создан с использованием перегрузки конструктора (4) , выбрасывается std::range_error .
Пример
#include <codecvt> #include <cstdint> #include <iostream> #include <locale> #include <string> int main() { std::string utf8 = "z\u00df\u6c34\U0001d10b"; // или u8"zß水𝄋" // или "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9d\x84\x8b"; // стандартный фасет преобразования UTF-8 / UTF-16 std::u16string utf16 = std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t>{}.from_bytes(utf8.data()); std::cout << "Преобразование в UTF-16 дало " << utf16.size() << " кодовых единиц: " << std::showbase; for (char16_t c : utf16) std::cout << std::hex << static_cast<std::uint16_t>(c) << ' '; // стандартный фасет преобразования UTF-8 / UTF-32 std::u32string utf32 = std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t>{}.from_bytes(utf8); std::cout << "\nПреобразование в UTF-32 дало " << std::dec << utf32.size() << " кодовых единиц: "; for (char32_t c : utf32) std::cout << std::hex << static_cast<std::uint32_t>(c) << ' '; std::cout << '\n'; }
Вывод:
UTF-16 conversion produced 5 code units: 0x7a 0xdf 0x6c34 0xd834 0xdd0b UTF-32 conversion produced 4 code units: 0x7a 0xdf 0x6c34 0x1d10b
Смотрите также
|
преобразует широкую строку в байтовую строку
(публичная функция-член) |
|
|
преобразует узкую многобайтовую строку символов в широкую строку с учетом состояния
(функция) |
|
|
[virtual]
|
преобразует строку из
ExternT
в
InternT
, например, при чтении из файла
(виртуальная защищенная функция-член
std::codecvt<InternT,ExternT,StateT>
)
|