Namespaces
Variants

operator<<,>> (std::filesystem::path)

From cppreference.net
template < class CharT, class Traits >

friend std:: basic_ostream < CharT,Traits > &

operator << ( std:: basic_ostream < CharT,Traits > & os, const path & p ) ;
(1) (seit C++17)
template < class CharT, class Traits >

friend std:: basic_istream < CharT,Traits > &

operator >> ( std:: basic_istream < CharT,Traits > & is, path & p ) ;
(2) (seit C++17)

Führt Stream-Eingabe oder -Ausgabe auf dem Pfad p durch. std:: quoted wird verwendet, damit Leerzeichen kein Abschneiden verursachen, wenn später durch den Stream-Eingabeoperator gelesen wird.

Diese Funktionsvorlagen sind für gewöhnliche unqualified oder qualified lookup nicht sichtbar und können nur durch argument-dependent lookup gefunden werden, wenn std::filesystem::path eine assoziierte Klasse der Argumente ist. Dies verhindert unerwünschte Konvertierungen bei Vorhandensein einer using namespace std :: filesystem ; using-directive .

Inhaltsverzeichnis

Parameter

os - Stream für die Ausgabe
is - Stream für die Eingabe
p - Pfad zum Einfügen oder Extrahieren

Rückgabewert

1) os
2) is

Ausnahmen

Kann implementierungsdefinierte Ausnahmen auslösen.

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;
}
**Hinweis:** Die Übersetzung wurde gemäß den Anforderungen durchgeführt: - HTML-Tags und Attribute wurden nicht übersetzt - Text innerhalb von ` `, `
` und `` Tags wurde beibehalten
- C++-spezifische Begriffe wurden nicht übersetzt
- Die ursprüngliche Formatierung wurde vollständig erhalten

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"

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 das Einfügen von allem, was in path konvertierbar ist, bei Vorhandensein einer using-directive als versteckter Freund gemacht