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) | (начиная с C++17) |
template< class CharT, class Traits >
friend std::basic_istream<CharT,Traits>&
operator>>( std::basic_istream<CharT,Traits>& is, path& p );
| (2) | (начиная с C++17) |
Выполняет потоковый ввод или вывод для пути p. std::quoted используется, чтобы пробелы не приводили к усечению данных при последующем чтении оператором потокового ввода.
Эти шаблоны функций недоступны для обычного неквалифицированного или квалифицированного поиска и могут быть найдены только с помощью поиска, зависящего от аргументов, когда std::filesystem::path является ассоциированным классом аргументов. Это предотвращает нежелательные преобразования при наличии using namespace std::filesystem; директивы using.
Параметры
| os | - | поток, в который выполняется вывод |
| is | - | поток, из которого выполняется ввод |
| p | - | путь для вставки или извлечения |
Возвращаемое значение
os
is
Исключения
Могут быть выброшены исключения, определяемые реализацией.
Возможная реализация
| 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;
}
|
Пример
#include <filesystem>
#include <iostream>
int main()
{
std::cout << std::filesystem::current_path() << '\n';
std::cout << std::filesystem::temp_directory_path() << '\n';
}
Возможный вывод:
"/home/user" "/tmp"
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.
| Отчёт об ошибке | Применяется к | Опубликованное поведение | Правильное поведение |
|---|---|---|---|
| LWG 2989 | C++17 | разрешалась вставка всего, что преобразуется в path, при наличии директивы using | функция была сделана скрытой дружественной функцией |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/filesystem/path/operator_ltltgtgt