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) (desde C++17)
template < class CharT, class Traits >

friend std:: basic_istream < CharT,Traits > &

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

Realiza entrada o salida de flujo en la ruta p . std:: quoted se utiliza para que los espacios no causen truncamiento cuando posteriormente se lea mediante el operador de entrada de flujo.

Estas plantillas de función no son visibles para la búsqueda no calificada o calificada ordinaria, y solo pueden ser encontradas mediante búsqueda dependiente de argumentos cuando std::filesystem::path es una clase asociada de los argumentos. Esto evita conversiones no deseadas en presencia de una using namespace std :: filesystem ; directiva using .

Contenidos

Parámetros

os - flujo en el que realizar la salida
is - flujo en el que realizar la entrada
p - ruta a insertar o extraer

Valor de retorno

1) os
2) is

Excepciones

Puede lanzar excepciones definidas por la implementación.

Implementación posible

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;
}

Ejemplo

#include <filesystem>
#include <iostream>
int main()
{
    std::cout << std::filesystem::current_path() << '\n';
    std::cout << std::filesystem::temp_directory_path() << '\n';
}

Salida posible:

"/home/user"
"/tmp"

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2989 C++17 permitía la inserción de todo convertible a path en presencia de una using-directive convertido en hidden friend