Namespaces
Variants

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

From cppreference.net
const value_type * c_str ( ) const ;
(1) (Filesystem TS)
const string_type & native ( ) const ;
(2) (Filesystem TS)
operator string_type ( ) const ;
(3) (Filesystem TS)

Greift auf den nativen Pfadnamen als Zeichenkette zu.

1) Entspricht native ( ) . c_str ( ) .
2) Gibt die native Zeichenkettenrepräsentation des Pfadnamens per Referenz zurück.
3) Gibt die native Zeichenketten-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.

Ausnahmen

1,2)
noexcept Spezifikation:
noexcept

Hinweise

Die Konvertierungsfunktion (3) wird bereitgestellt, damit Standard-Dateiöffnungs-APIs, die std::basic_string Dateinamen akzeptieren, wie der std::ifstream Konstruktor, Pfadnamen ohne Codeänderungen verwenden können:

fs::path p = "/tmp/text.txt";
std::ifstream f(p);

Beispiel

#include <clocale>
#include <cstdio>
#include <experimental/filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::experimental::filesystem;
int main()
{
    std::setlocale(LC_ALL, "en_US.utf8");
    std::locale::global(std::locale("en_US.utf8"));
    fs::path p = fs::u8path(u8"要らない.txt");
    // native string representation can be used with OS APIs
    std::ofstream(p) << "File contents"; // this uses operator string()
    if (std::FILE* f = std::fopen(p.c_str(), "r"))
    {
        int ch;
        while ((ch=fgetc(f))!= EOF) putchar(ch);
        std::fclose(f);
    }
    // multibyte and wide representation can be used for output
    std::cout.imbue(std::locale());
    std::cout << "\nFile name in narrow multibyte encoding: "
              << p.string() << '\n';
    std::wcerr.imbue(std::locale());
    std::wcerr << "File name in wide encoding: "
               << p.wstring() << '\n';
    fs::remove(p);
}

Mögliche Ausgabe:

File contents
File name in narrow multibyte encoding: 要らない.txt
File name in wide encoding: 要らない.txt

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)