如何在cpp中将控制台输出写入文本文件?

时间:2010-07-17 08:47:37

标签: c++ cmd

我正在尝试将控制台数据写入cpp中的单独文本文件中。有人帮我提供示例代码。

5 个答案:

答案 0 :(得分:18)

有多种方法可以做到这一点。您可以使用programname > out.txt从命令行重定向它。或者您可以在程序开始时使用freopen("out.txt","w",stdout);

答案 1 :(得分:1)

如果您想从自己的流程编写,我建议使用简单的打印方法

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

然后你可以打电话

print("Print this", cout);

用于控制台输出,或

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

写入文件“filename.out”。当然,如果print是一个输出所需对象所有特定信息的类方法,那么你获得的最多,这样你就可以轻松地将输出引导到不同的流。

答案 2 :(得分:0)

如果您想创建子进程并重定向其输出,您可以执行以下操作:

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);
}

答案 3 :(得分:0)

bbtrb写道:

  

void print(const string str,ostream&amp;   输出){       输出&lt;&lt;海峡; }

当然比这更好

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

这样你甚至可以获得函数返回的操作输出流。

答案 4 :(得分:0)

smerrimans的答案应该可以帮到你。

还可以选择实现自己的streambuf并将其与std :: cout和std :: cerr一起使用,以将打印输出存储到文件而不是打印到控制台。我之前做过那样的事情,将打印输出重定向到某种带时间戳的旋转日志。

您需要了解一下它是如何运作的,this book帮助我做到了。

如果那不是你所追求的,那就有点过分了。