std::filesystem::path::string, std::filesystem::path::wstring, std::filesystem::path::u8string, std::filesystem::path::u16string, std::filesystem::path::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>
string( const Alloc& a = Alloc() ) const;
|
(1) | (seit C++17) |
std::string string() const;
|
(2) | (seit C++17) |
std::wstring wstring() const;
|
(3) | (seit C++17) |
std::u16string u16string() const;
|
(4) | (seit C++17) |
std::u32string u32string() const;
|
(5) | (seit C++17) |
std::string u8string() const;
|
(6) | (seit C++17) (bis C++20) |
std::u8string u8string() const;
|
(seit C++20) | |
Gibt den internen Pfadnamen im nativen Pfadnamenformat zurück, umgewandelt in einen bestimmten Zeichenkettentyp. Eine etwaige Konvertierung wird wie folgt durchgeführt:
- Wenn
path::value_typegleichcharist, ist eine etwaige Konvertierung systemabhängig. Dies ist auf typischen POSIX-Systemen (wie Linux) der Fall, wo die native Kodierung UTF-8 ist undstring()keine Konvertierung durchführt. - Andernfalls, wenn
path::value_typegleichwchar_tist, ist eine etwaige Konvertierung unspezifiziert. Dies ist auf Windows der Fall, wowchar_t16 Bit beträgt und die native Kodierung UTF-16 ist. - Andernfalls, wenn
path::value_typegleichchar16_tist, ist die native Kodierung UTF-16 und die Konvertierungsmethode ist unspezifiziert. - Andernfalls, wenn
path::value_typegleichchar32_tist, ist die native Kodierung UTF-32 und die Konvertierungsmethode ist unspezifiziert. - Andernfalls, wenn
path::value_typegleichchar8_tist, ist die native Kodierung UTF-8 und die Konvertierungsmethode ist unspezifiziert.
1) Alle Speicherzuweisungen erfolgen durch
a.6) Die Ergebnis-Kodierung im Fall von
u8string() ist immer UTF-8.Rückgabewert
Der interne Pfadname im nativen Pfadnamenformat, konvertiert in den angegebenen String-Typ.
Ausnahmen
Kann implementierungsdefinierte Ausnahmen auslösen.
Beispiel
Diesen Code ausführen
#include <clocale> #include <cstdio> #include <filesystem> #include <fstream> #include <iostream> #include <locale> int main() { const char* const localeName = "ja_JP.utf-8"; std::setlocale(LC_ALL, localeName); std::locale::global(std::locale(localeName)); const std::filesystem::path p(u8"要らない.txt"); std::ofstream(p) << "File contents"; // native string representation can be used with OS APIs if (std::FILE* const f = std::fopen(p.string().c_str(), "r")) { for (int ch; (ch = std::fgetc(f)) != EOF;) std::putchar(ch); std::fclose(f); } // multibyte and wide representation can be used for output std::cout << "\nFile name in narrow multibyte encoding: " << p.string() << '\n'; // wstring() will throw in stdlibc++ (as per gcc-12.1.0), see: // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95048 // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102839 // works with more recent gcc-12.2.1 (2023/02/01) and clang-10+ std::wcout << "File name in wide encoding: " << p.wstring() << '\n'; std::filesystem::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 generischen Pfadnamenformat konvertiert in einen String zurück
(öffentliche Elementfunktion) |