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 работы может спасти вас от головной боли и некоторые основные ошибки управления памятью.
[C++: ввод/вывод с файлами] (http://www.cplusplus.com/doc/tutorial/files.html) – mreggen 2008-08-11 15:53:34
Любой, кто интересуется RAII, должен проверить [Официальное управление ресурсами Страница] (http://www.relisoft.com/resource/resmain.html) от Bartosz Milewski. – titanae 2008-09-08 12:43:12