LeviLamina
Loading...
Searching...
No Matches
StreamRedirector.h
1#pragma once
2
3#include <functional>
4#include <iostream>
5#include <utility>
6
7namespace ll::io {
8
9template <class Char = char, class Traits = std::char_traits<Char>>
11 StreamRedirector(StreamRedirector const&) = delete;
12 StreamRedirector& operator=(StreamRedirector const&) = delete;
13
14 StreamRedirector(std::basic_ostream<Char, Traits>& stream, std::basic_streambuf<Char, Traits>* rdbuf)
15 : stream(stream),
16 rdbuf_old(stream.rdbuf()) {
17 stream.set_rdbuf(rdbuf);
18 }
19
20 ~StreamRedirector() { stream.set_rdbuf(rdbuf_old); }
21
22private:
23 std::basic_ostream<Char, Traits>& stream;
24 std::basic_streambuf<Char, Traits>* rdbuf_old;
25};
26} // namespace ll::io
Definition StreamRedirector.h:10