operator<<,>>(std::filesystem::path)
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
osisExcepciones
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.
|