fstream великолепны, но я пойду немного глубже и расскажу вам о RAII .
Проблема с классическим примером заключается в том, что вы вынуждены закрывать файл самостоятельно, что означает, что вам придется согнуть свою архитектуру для этой цели. RAII использует автоматический вызов деструктора в C ++, чтобы закрыть файл для вас.
Обновление : кажется, что std :: fstream уже реализует RAII, поэтому приведенный ниже код бесполезен. Я оставлю это здесь для потомков и как пример RAII.
class FileOpener
{
public:
FileOpener(std::fstream& file, const char* fileName): m_file(file)
{
m_file.open(fileName);
}
~FileOpeneer()
{
file.close();
}
private:
std::fstream& m_file;
};
Теперь вы можете использовать этот класс в своем коде так:
int nsize = 10;
char *somedata;
ifstream myfile;
FileOpener opener(myfile, "<path to file>");
myfile.read(somedata,nsize);
// myfile is closed automatically when opener destructor is called
Изучение работы RAII может избавить вас от головной боли и некоторых серьезных ошибок управления памятью.