std::filesystem::path::string, std::filesystem::path::wstring, std::filesystem::path::u8string, std::filesystem::path::u16string, std::filesystem::path::u32string
Von cppreference.com
< cpp | filesystem | path
| template< class CharT, class Traits = std::char_traits<CharT>, class Alloc = std::allocator<CharT> > |
(1) | (seit C++17) |
| (2) | (seit C++17) | |
| std::string string() const; |
||
| std::wstring wstring() const; |
||
| std::u16string u16string() const; |
||
| std::u32string u32string() const; |
||
| (3) | ||
| std::string u8string() const; |
(seit C++17) (bis C++20) |
|
| std::u8string u8string() const; |
(seit C++20) | |
Gibt den internen Pfad im nativen Pfadformat zurück, konvertiert in den spezifischen String-Typ. Die Konvertierung, falls vorhanden, erfolgt wie folgt:
- Wenn
path::value_typechar ist, ist die Konvertierung, falls vorhanden, 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_typewchar_t ist, ist die Konvertierung, falls vorhanden, undefiniert. Dies ist unter Windows der Fall, wo wchar_t 16 Bit hat und die native Kodierung UTF-16 ist. - Andernfalls, wenn
path::value_typechar16_t ist, ist die native Kodierung UTF-16 und die Konvertierungsmethode undefiniert. - Andernfalls, wenn
path::value_typechar32_t ist, ist die native Kodierung UTF-32 und die Konvertierungsmethode undefiniert. - Andernfalls, wenn
path::value_typechar8_t ist, ist die native Kodierung UTF-8 und die Konvertierungsmethode undefiniert.
1) Alle Speicherallokationen werden von a durchgeführt.
3) Die Ergebnis-Kodierung im Falle von u8string() ist immer UTF-8.
Inhalt |
[bearbeiten] Parameter
(keine)
[bearbeiten] Rückgabewert
Der interne Pfad im nativen Pfadformat, konvertiert in den angegebenen String-Typ.
[edit] Exceptions
Kann implementierungsdefinierte Ausnahmen auslösen.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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
[bearbeiten] Siehe auch
| gibt den Pfad im generischen Pfadnamen-Format als String zurück (public member function) |