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?
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?
Eine Alternative zur Protokollierung.Config.DictConfig (config)? Ich kann das Sonarqube -Qualitätstor aufgrund des folgenden Sonarqube -Fehlers nicht umgehen: logging.config.dictconfig (config):...
Ich habe in Stroustrup PPP „Programming Principles and Practice Using C++“, 2. Auflage, in der Tabelle „Nützliche Operatoren für einige allgemeine und nützliche Typen“ hier
gelesen „ /
Es scheint, dass std::byte im Allgemeinen dazu gedacht ist, die Verwendung von char in Puffern zum Zuweisen von Rohspeicherblöcken zu ersetzen.
Aber ich mache mir darüber Sorgen Tatsache ist, dass...