Namespaces
Variants

std::filesystem::path::generic_string, std::filesystem::path::generic_wstring, std::filesystem::path::generic_u8string, std::filesystem::path::generic_u16string, std::filesystem::path::generic_u32string

Von de.cppreference.net
 
 
 
 
template< class CharT, class Traits = std::char_traits<CharT>,
          class Alloc = std::allocator<CharT> >
std::basic_string<CharT,Traits,Alloc>
    generic_string( const Alloc& a = Alloc() ) const;
(1) (seit C++17)
std::string generic_string() const;
(2) (seit C++17)
std::wstring generic_wstring() const;
(3) (seit C++17)
std::u16string generic_u16string() const;
(4) (seit C++17)
std::u32string generic_u32string() const;
(5) (seit C++17)
std::string generic_u8string() const;
(6) (seit C++17)
(bis C++20)
std::u8string generic_u8string() const;
(seit C++20)

Gibt den internen Pfadnamen im generischen Pfadnamenformat zurück, umgewandelt in einen bestimmten Zeichenkettentyp. Die Umwandlung, sofern vorhanden, wird wie folgt festgelegt:

  • Falls path::value_type char ist, ist die Umwandlung, falls vorhanden, systemabhängig. Dies ist auf typischen POSIX-Systemen (wie Linux) der Fall, wo die native Kodierung UTF-8 ist und string() keine Umwandlung durchführt.
  • Andernfalls, falls path::value_type wchar_t ist, ist die Umwandlung, falls vorhanden, unspezifiziert. Dies ist auf Windows der Fall, wo wchar_t 16 Bit ist und die native Kodierung UTF-16 ist.
  • Andernfalls, falls path::value_type char16_t ist, ist die native Kodierung UTF-16 und die Umwandlungsmethode ist unspezifiziert.
  • Andernfalls, falls path::value_type char32_t ist, ist die native Kodierung UTF-32 und die Umwandlungsmethode ist unspezifiziert.
  • Andernfalls, falls path::value_type char8_t ist, ist die native Kodierung UTF-8 und die Umwandlungsmethode ist unspezifiziert.

Das Zeichen / wird als Verzeichnistrennzeichen verwendet.

1) Alle Speicherzuweisungen erfolgen durch a.
6) Die Ergebniskodierung im Fall von u8string() ist immer UTF-8.

Parameter

a - Allokator, mit dem der String konstruiert wird
Typanforderungen
-
CharT muss einer der kodierten Zeichentypen sein ( char , wchar_t , char8_t (seit C++20) , char16_t und char32_t ).

Rückgabewert

Der interne Pfadname im generischen Pfadnamenformat, konvertiert in den angegebenen String-Typ.

Ausnahmen

Kann implementierungsdefinierte Ausnahmen auslösen.

Beispiel

#include <cstddef>
#include <filesystem>
#include <iomanip>
#include <iostream>
#include <span>
#include <string_view>
void print(std::string_view rem, auto const& str)
{
    std::cout << rem << std::hex << std::uppercase << std::setfill('0');
    for (const auto b : std::as_bytes(std::span{str}))
        std::cout << std::setw(2) << std::to_integer<unsigned>(b) << ' ';
    std::cout << '\n';
}
int main()
{
    std::filesystem::path p{"/家/屋"};
    std::cout << p << '\n';
    print("string    : ", p.generic_string());
    print("u8string  : ", p.generic_u8string());
    print("u16string : ", p.generic_u16string());
    print("u32string : ", p.generic_u32string());
    print("wstring   : ", p.generic_wstring());
}

Mögliche Ausgabe:

"/家/屋"
string    : 2F E5 AE B6 2F E5 B1 8B
u8string  : 2F E5 AE B6 2F E5 B1 8B
u16string : 2F 00 B6 5B 2F 00 4B 5C
u32string : 2F 00 00 00 B6 5B 00 00 2F 00 00 00 4B 5C 00 00
wstring   : 2F 00 00 00 B6 5B 00 00 2F 00 00 00 4B 5C 00 00
**Übersetzungsdetails:** - "Run this code" → "Diesen Code ausführen" - "Possible output:" → "Mögliche Ausgabe:" - Alle HTML-Tags, Attribute und Code-Blöcke wurden unverändert beibehalten - C++-spezifische Begriffe wurden nicht übersetzt - Formatierung und Struktur wurden originalgetreu erhalten

Siehe auch

gibt den Pfad im nativen Pfadnamenformat als String zurück
(öffentliche Elementfunktion)