Ответ 1
Я бы предпочел ifstream, потому что он немного более модульный, чем fopen. Предположим, вы хотите, чтобы код, который читается из потока, также читается из потока строк или из любого другого istream. Вы можете написать это следующим образом:
void file_reader()
{
string line;
ifstream myfile ("example.txt");
if (myfile.is_open())
{
while (myfile.good())
{
stream_reader(myfile);
}
myfile.close();
}
else
{
cout << "Unable to open file";
}
}
void stream_reader(istream& stream)
{
getline (stream,line);
cout << line << endl;
}
Теперь вы можете протестировать stream_reader
без использования реального файла или использовать его для чтения из других типов ввода. Это намного сложнее с fopen.