close
Espacios de nombres
Variantes

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

De cppreference.com
 
 
 
 
<tbody> </tbody>
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)

Ejecuta entrada o salida de flujo en la ruta de acceso p. std::quoted se utiliza para que los espacios no provoquen truncamiento cuando el operador de entrada de flujo los lea más tarde.

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

Parámetros

os - Flujo en el que ejecutar la salida.
is - Flujo en el que ejecutar la entrada.
p - Ruta de acceso a insertar o extraer.

Valor de retorno

1) os
2) is

Excepciones

Puede lanzar excepciones definidas por la implementación.

Posible implementación

Primera versión
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;
}
Segunda versión
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 <iostream>
#include <filesystem>
int main()
{
    std::cout << std::filesystem::current_path() << '\n';
    std::cout << std::filesystem::temp_directory_path() << '\n';
}

Posible salida:

"/home/user"
"/tmp"

Informes de defectos

Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

ID Aplicado a Comportamiento según lo publicado Comportamiento correcto
LWG 2989 C++17 Se admitía la comparación de todo lo que fuera convertible a path en la presencia de una directiva using. La comparación se hizo friend oculto.