operator<<,>>(std::filesystem::path)
template< class CharT, class Traits > friend std::basic_ostream<CharT,Traits>& |
(1) | (seit C++17) |
template< class CharT, class Traits > friend std::basic_istream<CharT,Traits>& |
(2) | (seit C++17) |
Führt Stream-Ein- oder -Ausgabe für den Pfad p durch. std::quoted wird verwendet, damit Leerzeichen bei späterem Lesen durch den Stream-Input-Operator keine Abschneidung verursachen.
Diese Funktionsvorlagen sind für normale nicht qualifizierte oder qualifizierte Suchen nicht sichtbar und können nur durch argumentabhängige Suche gefunden werden, wenn std::filesystem::path eine zugeordnete Klasse der Argumente ist. Dies verhindert unerwünschte Konvertierungen bei Vorhandensein einer using-directive wie using namespace std::filesystem;.
Inhalt |
[bearbeiten] Parameter
| os | - | Stream, auf dem die Ausgabe erfolgen soll |
| ist | - | Stream, aus dem die Eingabe erfolgen soll |
| p | - | Pfad, der eingefügt oder extrahiert werden soll |
[bearbeiten] Rückgabewert
[edit] Exceptions
Kann implementierungsdefinierte Ausnahmen auslösen.
[bearbeiten] Mögliche Implementierung
| operator<< |
|---|
template<class CharT, class Traits> friend std::basic_ostream<CharT,Traits>& operator<<(std::basic_ostream<CharT,Traits>& os, const path& p) { os << std::quoted(p.string<CharT,Traits>()); return os; } |
| operator>> |
template<class CharT, class Traits> friend std::basic_istream<CharT,Traits>& operator>>(std::basic_istream<CharT,Traits>& is, path& p) { std::basic_string<CharT, Traits> t; is >> std::quoted(t); p = t; return is; } |
[bearbeiten] Beispiel
#include <filesystem> #include <iostream> int main() { std::cout << std::filesystem::current_path() << '\n'; std::cout << std::filesystem::temp_directory_path() << '\n'; }
Mögliche Ausgabe
"/home/user" "/tmp"
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 2989 | C++17 | erlaubte Einfügung von allem, was in Anwesenheit einer using-directive in path konvertierbar ist |
versteckte Freundfunktion gemacht |