gpt4 book ai didi

c++ - 将 std::cout 的拷贝重定向到文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:08:42 25 4
gpt4 key购买 nike

我需要将 std::cout 的拷贝重定向到文件。 IE。我需要在控制台和文件中查看输出。如果我使用这个:

// redirecting cout's output
#include <iostream>
#include <fstream>
using namespace std;

int main () {
streambuf *psbuf, *backup;
ofstream filestr;
filestr.open ("c:\\temp\\test.txt");

backup = cout.rdbuf(); // back up cout's streambuf

psbuf = filestr.rdbuf(); // get file's streambuf
cout.rdbuf(psbuf); // assign streambuf to cout

cout << "This is written to the file";

cout.rdbuf(backup); // restore cout's original streambuf

filestr.close();

return 0;
}

然后我将字符串写入文件,但我在控制台中看不到任何内容。我该怎么做?

最佳答案

您可以做的最简单的事情是创建一个执行此操作的输出流类:

#include <iostream>
#include <fstream>

class my_ostream
{
public:
my_ostream() : my_fstream("some_file.txt") {}; // check if opening file succeeded!!
// for regular output of variables and stuff
template<typename T> my_ostream& operator<<(const T& something)
{
std::cout << something;
my_fstream << something;
return *this;
}
// for manipulators like std::endl
typedef std::ostream& (*stream_function)(std::ostream&);
my_ostream& operator<<(stream_function func)
{
func(std::cout);
func(my_fstream);
return *this;
}
private:
std::ofstream my_fstream;
};

有关此代码的实际操作,请参阅此 ideone 链接:http://ideone.com/T5Cy1M我目前无法检查文件输出是否正确完成,尽管这应该不是问题。

关于c++ - 将 std::cout 的拷贝重定向到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14155364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com