Line |
Branch |
Exec |
Source |
1 |
|
|
#pragma once |
2 |
|
|
|
3 |
|
|
#include <iostream> |
4 |
|
|
#include <sstream> |
5 |
|
|
#include <streambuf> |
6 |
|
|
#include <string> |
7 |
|
|
|
8 |
|
|
namespace utils { |
9 |
|
|
// RedirectCout is a utility class that redirects std::cout to a stringstream. |
10 |
|
|
class RedirectCout { |
11 |
|
|
public: |
12 |
|
8 |
RedirectCout() : oldBuffer_(std::cout.rdbuf()) { |
13 |
1/2
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
|
8 |
std::cout.rdbuf(buffer_.rdbuf()); |
14 |
|
8 |
} |
15 |
|
8 |
~RedirectCout() { std::cout.rdbuf(oldBuffer_); } |
16 |
|
|
RedirectCout(const RedirectCout&) = delete; // Disable copy constructor |
17 |
|
|
RedirectCout& operator=(const RedirectCout&) = |
18 |
|
|
delete; // Disable copy assignment |
19 |
|
|
RedirectCout(RedirectCout&&) = delete; // Disable move constructor |
20 |
|
|
RedirectCout& operator=(RedirectCout&&) = delete; // Disable move assignment |
21 |
|
|
|
22 |
|
11 |
std::string str() const { return buffer_.str(); } |
23 |
2/4
✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
|
27 |
void clear() { buffer_.str(""); } |
24 |
|
|
|
25 |
|
|
private: |
26 |
|
|
std::streambuf* oldBuffer_; |
27 |
|
|
std::stringstream buffer_; |
28 |
|
|
}; |
29 |
|
|
} // namespace utils |
30 |
|
|
|