2010-08-23 138 views
15

我正在编写一个程序,我希望用户能够指定输出是写入文件还是写入标准输出。在这之前,我的程序一直在使用printf命令,所以我只是希望简单地将命令改为fprintf命令,但是我的编译器正在向我大喊,因为显然它们不是同一个对象类。C++ FILE指向标准输出的指针?

例如:

FILE *fp; 
bool print_to_file; 
. 
. 
. 
if(print_to_file){ 
    fp = fopen("something.txt", "w"); 
} 
else{ 
    fp = &stdout; 
} 
fprintf(fp,"%s\t%s\t%s\n",string1 . c_str(), string2 . c_str(), string3 . c_str()); 

我宁愿坚持使用fprintf中,找到一个文件指针到stdout,没有人知道这是可能的吗?如果答案是否定的,我可以打开我的文件作为fstreams,然后使用fprintf?

+0

当然,在惯用的C++中,你可以使用'ostream&'引用'std :: cout'或'std :: ofstream' – MSalters 2010-08-24 06:48:54

回答

35

stdoutFILE*,所以你可以简单地使用:

FILE* fp = stdout; 
+1

谢谢!工作就像一个魅力:) – Mitch 2010-08-23 19:55:29

7

刚落符号:fp = stdout;