Namespaces
Variants

std::wstring_convert<Codecvt,Elem,Wide_alloc,Byte_alloc>:: from_bytes

From cppreference.net
Definiert im 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)

Konvertiert eine Bytefolge in eine Breitzeichen-Zeichenkette unter Verwendung des Facet, auf das cvtptr  zeigt.

1) Die Bytefolge besteht nur aus einem Element byte .
2) Die Bytefolge ist die nullterminierte Folge, die bei ptr beginnt.
3) Die Bytefolge ist die in str enthaltene Sequenz.
4) Die Byte-Sequenz ist der Bereich [ first , last ) .

Bevor die Konvertierung beginnt, falls * this nicht mit Konstruktorüberladung (3) erstellt wurde, wird cvtstate auf seinen Standardwert (den anfänglichen Konvertierungszustand) gesetzt.

Die Anzahl der erfolgreich konvertierten Eingabeelemente wird in cvtcount gespeichert.

Inhaltsverzeichnis

Rückgabewert

Wenn die Konvertierung erfolgreich ist, gibt sie das Konvertierungsergebnis zurück. Andernfalls, wenn * this mit Konstruktor-Überladung (4) konstruiert wurde, gibt sie wide_err_string zurück.

Ausnahmen

Wenn die Konvertierung fehlschlägt und * this nicht mit Konstruktor-Überladung (4) erstellt wurde, wird std::range_error geworfen.

Beispiel

#include <codecvt>
#include <cstdint>
#include <iostream>
#include <locale>
#include <string>
int main()
{
    std::string utf8 = "z\u00df\u6c34\U0001d10b"; // oder u8"zß水𝄋"
                 // oder "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9d\x84\x8b";
    // der UTF-8 / UTF-16 Standardkonvertierungs-Facet
    std::u16string utf16 = 
        std::wstring_convert<std::codecvt_utf8_utf16<char16_t>,
                             char16_t>{}.from_bytes(utf8.data());
    std::cout << "UTF-16-Konvertierung erzeugte " << utf16.size()
              << " Code-Einheiten: " << std::showbase;
    for (char16_t c : utf16)
        std::cout << std::hex << static_cast<std::uint16_t>(c) << ' ';
    // der UTF-8 / UTF-32 Standardkonvertierungs-Facet
    std::u32string utf32 =
        std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t>{}.from_bytes(utf8);
    std::cout << "\nUTF-32-Konvertierung erzeugte " << std::dec
              << utf32.size() << " Code-Einheiten: ";
    for (char32_t c : utf32)
        std::cout << std::hex << static_cast<std::uint32_t>(c) << ' ';
    std::cout << '\n';
}

Ausgabe:

UTF-16 conversion produced 5 code units: 0x7a 0xdf 0x6c34 0xd834 0xdd0b
UTF-32 conversion produced 4 code units: 0x7a 0xdf 0x6c34 0x1d10b

Siehe auch

wandelt eine Breitzeichen-Zeichenkette in eine Byte-Zeichenkette um
(öffentliche Elementfunktion)
wandelt eine schmale Multibyte-Zeichenkette in eine Breitzeichen-Zeichenkette um, mit Zustand
(Funktion)
[virtual]
wandelt eine Zeichenkette von ExternT zu InternT um, z.B. beim Lesen aus einer Datei
(virtuelle geschützte Elementfunktion von std::codecvt<InternT,ExternT,StateT> )