Namespaces
Variants

std::filesystem::path:: c_str, std::filesystem::path:: native, std::filesystem::path:: operator string_type()

From de.cppreference.net
const value_type * c_str ( ) const noexcept ;
(1) (seit C++17)
const string_type & native ( ) const noexcept ;
(2) (seit C++17)
operator string_type ( ) const ;
(3) (seit C++17)

Greift auf den nativen Pfadnamen als Zeichenkette zu.

1) Entspricht native ( ) . c_str ( ) .
2) Gibt die native-Format-Darstellung des Pfadnamens per Referenz zurück.
3) Gibt die native-Format-Darstellung des Pfadnamens als Wert zurück.

Inhaltsverzeichnis

Parameter

(keine)

Rückgabewert

Die native Zeichenkettenrepräsentation des Pfadnamens, die native Syntax, native Zeichentypen und native Zeichenkodierung verwendet. Diese Zeichenkette ist für die Verwendung mit Betriebssystem-APIs geeignet.

Hinweise

Die Konvertierungsfunktion (3) wird bereitgestellt, damit APIs, die std::basic_string Dateinamen akzeptieren, Pfadnamen ohne Codeänderungen verwenden können.

Beispiel

#include <cstdio>
#ifdef _MSC_VER
#include <fcntl.h>
#include <io.h>
#else
#include <clocale>
#include <locale>
#endif
#include <filesystem>
#include <fstream>
int main()
{
#ifdef _MSC_VER
    _setmode(_fileno(stderr), _O_WTEXT);
#else
    std::setlocale(LC_ALL, "");
    std::locale::global(std::locale(""));
#endif
    std::filesystem::path p(u8"要らない.txt");
    std::ofstream(p) << "File contents"; // Vor LWG2676 wird operator string_type() verwendet
                                         // auf MSVC, wo string_type wstring ist, funktioniert nur
                                         // aufgrund nicht standardkonformer Erweiterung.
                                         // Nach LWG2676 werden neue fstream-Konstruktoren verwendet
    // Native String-Darstellung kann mit betriebssystemspezifischen APIs verwendet werden
#ifdef _MSC_VER
    if (std::FILE* f = _wfopen(p.c_str(), L"r"))
#else
    if (std::FILE* f = std::fopen(p.c_str(), "r"))
#endif
    {
        for (int ch; (ch = fgetc(f)) != EOF; std::putchar(ch))
        {}
        std::fclose(f);
    }
    std::filesystem::remove(p);
}

Mögliche Ausgabe:

File contents

Siehe auch

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