Namespaces
Variants
Views
Actions

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

From cppreference.com
< cpp‎ | filesystem‎ | path
 
 
 
 
template< class CharT, class Traits >

std::basic_ostream<CharT,Traits>&

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

std::basic_istream<CharT,Traits>&

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

Performs stream input or output on the path p. std::quoted is used so that spaces do not cause truncation when later read by stream input operator.

Contents

[edit] Parameters

os - stream to perform output on
is - stream to perform input on
p - path to insert or extract

[edit] Return value

1) os
2) is

[edit] Exceptions

(none)

[edit] Possible implementation

First version
template< class CharT, class Traits >
std::basic_ostream<CharT,Traits>&
    operator<<( std::basic_ostream<CharT,Traits>& os, const path& p )
{
    os << std::quoted(p.string<CharT,Traits>());
    return os;
}
Second version
template< class CharT, class Traits >
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;
}

[edit] Example

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

Possible output:

"/home/user"