Wie konvertiere ich const char* sicher in const char8_t* in C++20?C++

Programme in C++. Entwicklerforum
Anonymous
 Wie konvertiere ich const char* sicher in const char8_t* in C++20?

Post by Anonymous »

Aus dieser Antwort habe ich gelernt, dass wir in C++17 std::fstream mit einem UTF-8-Pfad über std::filesystem::u8path öffnen können. Aber in C++20 ist diese Funktion veraltet und wir sollten stattdessen const char8_t* an den Konstruktor std::filesystem::path übergeben.

Hier kommt das Problem: Obwohl wir (über reinterpret_cast) jeden Zeiger legal auf const char* konvertieren können, können wir dies nicht rückwärts tun: von const char* nach z.B. const char8_t* (es würde gegen strenge Aliasing-Regeln verstoßen). Wenn wir also über eine externe API verfügen, die eine char-basierte UTF-8-Darstellung des Dateinamens zurückgibt (z. B. aus einer in C geschriebenen Bibliothek), können wir den Zeiger nicht sicher in eine char8_t-basierte Darstellung konvertieren .

Wie sollen wir also eine solche char-basierte Ansicht von UTF-8-Strings in eine char8_t-basierte Ansicht davon konvertieren?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post