std::experimental::filesystem::path::c_str, std::experimental::filesystem::path::native, std::experimental::filesystem::path::operator string_type()
Von cppreference.com
< cpp | experimental | fs | path
| const value_type* c_str() const; |
(1) | (Dateisystem-TS) |
| const string_type& native() const; |
(2) | (Dateisystem-TS) |
| operator string_type() const; |
(3) | (Dateisystem-TS) |
Greift auf den nativen Pfadnamen als Zeichenkette zu.
1) Äquivalent zu native().c_str().
2) Gibt die native Zeichenkettenrepräsentation des Pfadnamens per Referenz zurück.
3) Gibt die native Zeichenkettenrepräsentation des Pfadnamens als Wert zurück.
Inhalt |
[bearbeiten] Parameter
(keine)
[bearbeiten] Rückgabewert
Die native Zeichenkettenrepräsentation des Pfadnamens, unter Verwendung nativer Syntax, nativem Zeichentyp und nativer Zeichenkodierung. Diese Zeichenkette ist zur Verwendung mit OS-APIs geeignet.
[bearbeiten] Ausnahmen
1,2)
noexcept-Spezifikation:
noexcept
[bearbeiten] Hinweise
Die Konvertierungsfunktion (3) wird bereitgestellt, damit Standard-Dateiöffnungs-APIs, die std::basic_string-Dateinamen akzeptieren, wie z.B. der Konstruktor von std::ifstream, Pfadnamen ohne Codeänderungen verwenden können.
fs::path p = "/tmp/text.txt"; std::ifstream f(p);
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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
[bearbeiten] Siehe auch
| gibt den Pfad im nativen Pfadnamen-Format als String zurück (public member function) | |
| gibt den Pfad im generischen Pfadnamen-Format als String zurück (public member function) |