我正在尝试将控制台数据写入cpp中的单独文本文件中。有人帮我提供示例代码。
答案 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)
还可以选择实现自己的streambuf并将其与std :: cout和std :: cerr一起使用,以将打印输出存储到文件而不是打印到控制台。我之前做过那样的事情,将打印输出重定向到某种带时间戳的旋转日志。
您需要了解一下它是如何运作的,this book帮助我做到了。
如果那不是你所追求的,那就有点过分了。