How to write console output to a text file in cpp?

2019-02-17 11:20发布

I'm trying to write console data into a separate text file in cpp. Anybody help me with sample code.

标签: c++ cmd
5条回答
三岁会撩人
2楼-- · 2019-02-17 11:54

There are various ways to do this. You could redirect it from the command line with programname > out.txt. Or you could use freopen("out.txt","w",stdout); at the start of your program.

查看更多
做个烂人
3楼-- · 2019-02-17 11:54

If you want to write from your own process, I'd suggest a simple print method

void print(const string str, ostream & output)
{
    output << str;
}

Then you can call

print("Print this", cout);

for console output, or

ofstream filestream("filename.out");
print("Print this", filestream);

to write into a file "filename.out". Of course you gain most, if print is a class method that outputs all the object's specific information you need and this way you can direct the output easily to different streams.

查看更多
我只想做你的唯一
4楼-- · 2019-02-17 12:00

smerrimans answer should help you out.

There is also the option to implement your own streambuf and use it with std::cout and std::cerr to store printouts to file instead of printing to console. I did that a while ago to redirect printouts to some sort of rotating logs with timestamps.

You will need to read up a little bit on how it works and this book helped me get it right.

If that's not what you're after it is a bit of overkill though.

查看更多
forever°为你锁心
5楼-- · 2019-02-17 12:01

If you want to create a child process and redirect its output you could do something like this:

FILE* filePtr = popen("mycmd");
FILE* outputPtr = fopen("myfile.txt");

if(filePtr && outputPtr) {
    char tmp;
    while((tmp = getc(filePtr)) != EOF)
        putc(tmp, outputPtr);

    pclose(filePtr);
    fclose(outputPtr);
}
查看更多
干净又极端
6楼-- · 2019-02-17 12:10

bbtrb wrote:

void print(const string str, ostream & output) { output << str; }

Better than this is of course

ostream& output(ostream& out, string str) {out << str; return out;}

so that you can even have the manipulated output stream returned by the function.

查看更多
登录 后发表回答