std::experimental::filesystem:: u8path
|
Definiert im Header
<experimental/filesystem>
|
||
|
template
<
class
Source
>
path u8path ( const Source & source ) ; |
(1) | (filesystem TS) |
|
template
<
class
InputIt
>
path u8path ( InputIt first, InputIt last ) ; |
(2) | (filesystem TS) |
Konstruiert einen Pfad
p
aus einer UTF-8-kodierten Sequenz von
char
s, bereitgestellt entweder als
std::string
, oder als nullterminierter Multibyte-String, oder als [
first
,
last
) Iterator-Paar.
-
Falls
path::value_typeden Typ char hat und die native Kodierung UTF-8 ist, wird ein Pfad direkt konstruiert, als ob durch path ( source ) oder path ( first, last ) . Hinweis: Dies ist die typische Situation auf einem POSIX-System, das Unicode verwendet, wie z.B. Linux. -
Andernfalls, falls
path::value_typeden Typ wchar_t hat und die native Kodierung UTF-16 ist (dies ist die Situation unter Windows), oder fallspath::value_typeden Typ char16_t hat (native Kodierung garantiert UTF-16) oder char32_t (native Kodierung garantiert UTF-32), dann wird zunächst die UTF-8-Zeichenfolge in einen temporären Stringtmpvom Typpath::string_typekonvertiert und dann der neue Pfad konstruiert, als ob durch path ( tmp ) . -
Andernfalls (für nicht-UTF-8-Schmalzeichenkodierungen und für nicht-UTF-16-wchar_t) wird zunächst die UTF-8-Zeichenfolge in einen temporären UTF-32-kodierten String
tmpvom Typ std:: u32string konvertiert, und dann der neue Pfad konstruiert, als ob durch path ( tmp ) (dieser Pfad wird auf einem POSIX-System mit einem nicht-Unicode-Multibyte- oder Single-Byte-kodierten Dateisystem eingeschlagen).
Inhaltsverzeichnis |
Parameter
| source | - | eine UTF-8-kodierte std::string , ein Zeiger auf einen nullterminierten Multibyte-String oder ein Eingabe-Iterator mit char-Werttyp, der auf einen nullterminierten Multibyte-String zeigt |
| first, last | - | ein Paar von LegacyInputIterator s , die eine UTF-8-kodierte Zeichensequenz spezifizieren |
| Typanforderungen | ||
-
InputIt
muss die Anforderungen von
LegacyInputIterator
erfüllen.
|
||
-
InputIt
muss
char
sein.
|
||
Rückgabewert
Der aus der Eingabezeichenkette konstruierte Pfad nach der Konvertierung von UTF-8 in die native Zeichenkodierung des Dateisystems.
Exceptions
Kann filesystem_error bei zugrundeliegenden OS-API-Fehlern werfen oder std:: bad_alloc bei Speicherallokierungsfehlern.
Hinweise
Auf Systemen, bei denen das native Pfadformat vom generischen Pfadformat abweicht (weder Windows- noch POSIX-Systeme sind Beispiele für solche Betriebssysteme), wird das Argument dieser Funktion, falls es im generischen Format vorliegt, in das native Format konvertiert.
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
|
repräsentiert einen Pfad
(Klasse) |