2010-08-23 38 views
15

Tôi đang viết một chương trình và tôi muốn người dùng có thể chỉ định liệu đầu ra có được ghi vào một tệp hay không. Cho đến thời điểm này, chương trình của tôi đã sử dụng lệnh printf, vì vậy tôi đã hy vọng chỉ đơn giản là thay đổi lệnh thành lệnh fprintf, nhưng trình biên dịch của tôi đang hét vào tôi vì rõ ràng, chúng không phải là các lớp đối tượng giống nhau.Con trỏ FILE C++ thành stdout?

Ví dụ:

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

Tôi muốn gắn bó với fprintf và tìm thấy một con trỏ FILE để stdout, không ai biết nếu đó là có thể? Nếu câu trả lời là không, tôi có thể mở tập tin của tôi như fstreams, và sau đó sử dụng fprintf?

+0

Tất nhiên, trong thành ngữ C++ bạn sẽ sử dụng 'ostream &' tham chiếu 'std :: cout' hoặc' std :: ofstream' – MSalters

Trả lời

35

stdout là một FILE*, vì vậy bạn chỉ có thể sử dụng:

FILE* fp = stdout; 
+1

Cảm ơn! Làm việc như người ở :) – Mitch

7

Chỉ cần thả dấu và: fp = stdout;.