С++ FILE указатель на stdout?

Я пишу программу, и я хочу, чтобы пользователь мог указать, записывается ли вывод в файл или в стандартный вывод. До этого момента моя программа использовала команды printf, поэтому я надеялся просто изменить команды на команды fprintf, но мой компилятор кричит на меня, потому что, очевидно, это не те же классы объектов.

Например:

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 и найти указатель FILE для stdout, знает ли кто-нибудь, возможно ли это? Если ответ отрицательный, могу ли я открыть мои файлы как fstream, а затем использовать fprintf?

Ответы

Ответ 1

stdout - это FILE*, поэтому вы можете просто использовать:

FILE* fp = stdout;

Ответ 2

Просто опустите амперсанд: fp = stdout;.