2010-08-23 4 views
15

J'écris un programme et je veux que l'utilisateur puisse spécifier si la sortie est écrite dans un fichier ou stdout. Jusqu'à présent, mon programme utilisait des commandes printf, donc j'espérais simplement changer les commandes en commandes fprintf, mais mon compilateur me crie parce que, évidemment, ce ne sont pas les mêmes classes d'objets.Pointeur FICHIER C++ sur stdout?

Par exemple:

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

Je préfère rester avec fprintf et trouver un pointeur de fichier stdout, personne ne sait si cela est possible? Si la réponse est non, puis-je ouvrir mes fichiers en tant que fstreams, puis utiliser fprintf?

+0

Bien sûr, en C++ idiomatique, vous utiliseriez un 'ostream &' qui fait référence à 'std :: cout' ou' std :: ofstream' – MSalters

Répondre

35

stdout est un FILE*, vous pouvez simplement utiliser:

FILE* fp = stdout; 
+1

Merci! Travaillé comme un charme :) – Mitch

7

Juste l'esperluette drop: fp = stdout;.