将所有程序输出写入C++中的txt文件
我需要将所有程序输出写入文本文件。我相信这是做这种方式,将所有程序输出写入C++中的txt文件
sOutFile << stdout;
其中sOutFile是创建这样的文件ofstream的对象:
sOutFile("CreateAFile.txt"); // CreateAFile.txt is created.
当我插入标准输出到sOutFile对象,我得到了一些代码,这似乎在我创建的文本文件中类似于八进制 [十六进制]代码或某种类型的地址。
0x77c5fca0
但是,让我感到困惑的是,在我的程序中,我多次使用cout。大部分只是字面上的陈述。如果我没有错,那是程序输出。
如果这段代码是一个地址,它是否会包含我所有的输出?我可以将它读回程序并找出那种方式吗?
我该怎么做才能让我的所有程序输出写入文本文件?
这是一个重复:this question
您可以重定向使用std::freopen
标准输出,标准错误和标准输入。
从上面的链接:
/* freopen example: redirecting stdout */
#include <stdio.h>
int main()
{
freopen ("myfile.txt","w",stdout);
printf ("This sentence is redirected to a file.");
fclose (stdout);
return 0;
}
您可以通过命令提示符下,像这样还运行程序:
a.exe > stdout.txt 2> stderr.txt
如果你想在一个文本文件中输出所有内容,你不需要额外编写任何代码。
命令行:
program > output.txt
如果你只是想重定向一定的输出,你可以使用的ostream作为dirkgently建议。
如果你的程序已经使用COUT/printf和你想要的一切,你现在输出发送到一个文件,你可以简单地将stdout您现有的电话前指向一个文件: http://support.microsoft.com/kb/58667
相关代码:
freopen("file.txt", "w", stdout);
cout << "hello file world\n"; // goes to file.txt
freopen("CON", "w", stdout);
printf("Hello again, console\n"); // redirected back to the console
或者如果你只是想有些事情要打印到文件,你只想要一个普通的文件输出流:http://www.cplusplus.com/doc/tutorial/files.html
相关代码:
ofstream myfile;
myfile.open("file.txt");
myfile << "Hello file world.\n";
printf("Hello console.\n");
myfile.close();
编辑从约翰·T和布莱恩·邦迪总的答案:
最后,如果你从命令行运行它,你可以将输出重定向通过使用重定向操作其他每个人都提到“>”或追加“>>”:
myProg > stdout.txt 2> stderr.txt
附加呃...似乎是每个人都在用我的答案来做。 +1为你的努力,虽然。 – 2009-02-22 08:06:11
然后,您不能在任何地方使用std :: cout从您的程序打印内容。将std :: cout更改为std :: ostream,然后根据需要传递您的文件或std :: cout。
sOutFile << stdout;
in C“stdout
”定义为FILE*
变量。这只是一个指针。将它输出到文件只是将指针的值写入文件中:0x77c5fca0
。
如果您想要将输出指向文件,请首先将其写入文件,或使用命令行将程序的输出重定向至文件。
我认为,创建该文件的说法应该是“ofstream的sOutFile(” CreateAFile.txt“);”。对? – 2009-02-22 08:01:58