Я бы предпочел ifstream, потому что он немного более модульный, чем fopen.Предположим, вы хотите, чтобы код, который читает из потока, также считывал из потока строк или из любого другого потока.Вы можете написать это так:
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 это намного сложнее.