Можно также проверить факт успешного открытия файла с помощью функции
bool is_open();
Эта функция возвращает значение ИСТИНА, если поток связан с открытым файлом, и ЛОЖЬ — в противном случае. Например, используя следующий код, можно узнать, открыт ли в данный момент потоковый объект
if(!mystream.is_open()) {
cout << "Файл не открыт.\n";
// ...
}
Хотя вполне корректно использовать функцию
ifstream mystream("myfile"); // файл открывается для ввода
Если по какой-то причине файл открыть невозможно, потоковая переменная, связываемая с этим файлом, устанавливается равной значению ЛОЖЬ.
Чтобы закрыть файл, используйте функцию-член
mystream.close();
Функция
Проще всего считывать данные из текстового файла или записывать их в него с помощью операторов
// Запись данных в файл.
#include
#include
using namespace std;
int main()
{
ofstream out("test");
if(!out) {
cout << "He удается открыть файл.\n";
return 1;
}
out << 10 << " " << 123.23 << "\n";
out << "Это короткий текстовый файл.";
out.close();
return 0;
}
Следующая программа считывает целое число, float-значение, символ и строку из файла, созданного при выполнении предыдущей программой.
// Считывание данных из файла.
#include
#include
using namespace std;
int main()
{
char ch;
int i;
float f;
char str[80];
ifstream in("test");
if(!in) {
cout << "He удается открыть файл.\n";
return 1;
}
in >> i;
in >> f;
in >> ch;
in >> str;
cout << i << " " << f << " " << ch << "\n";
cout << str;
in.close();
return 0;
}
Следует иметь в виду, что при использовании оператора
Форматированные текстовые файлы (подобные тем, которые использовались в предыдущих примерах) полезны во многих ситуациях, но они не обладают гибкостью неформатированных двоичных файлов. Поэтому C++ поддерживает ряд функций файлового ввода-вывода в двоичном режиме, которые могут выполнять операции без форматирования данных.
Для выполнения двоичных операций файлового ввода-вывода необходимо открыть файл с использованием спецификатора режима
В общем случае существует два способа записи неформатированных двоичных данных в файл и считывания их из файла. Первый состоит в использовании функции-члена