Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1
Кент Рейсдорф. BORLAND C++BUILDER. Страница 92
Один из конструкторов ifstream принимает char* в качестве аргумента, поэтому можно указать имя файла непосредственно при создании экземпляра этого класса. В этом случае строки 12 и 13 сливаются в одну:
ifstream infile("readfile.cpp");
Если вы создаете объект таким образом, вызов функции ореп() не требуется. Файл будет автоматически открыт конструктором.
Вызов функции close() в строке 19 листинга 4.4 не является обязательным. Деструктор класса ifstream проверяет, не остался ли файл открытым, и при необходимости сам вызывает close(). Таким образом, файл в любом случае будет закрыт до разрушения экземпляра класса. В своих программах я почти всегда использую явный вызов closeQ. Это способствует документированию программы, указывая на завершение работы с файлом.
В силу того, что классы для работы с файлами происходят от iostream, вы можете использовать операторы вставки и извлечения из потока таким же образом, как и при консольном вводе-выводе. В листинге 4.4 использована функция getline(), потому что оператор извлечения (») останавливается на первом встреченном пробельном символе. (К пробельным символам (white- space) относятся собственно пробел, символ табуляции, и т.д.) Функция же getline() читает из файла символы до тех пор, пока не встретит символ конца строки (EOL — end-of-line). Оператор извлечения из потока очень полезен при чтении отдельных чисел, которые не содержат пробельных символов. В следующем фрагменте из файла считываются числа, которые затем выводятся на экран:
Обратите внимание, что в данном примере файл по-прежнему является текстовым, а не двоичным. Оператор извлечения автоматически преобразует текст в целое число.
Вывод в файл в некотором смысле проще, чем ввод, благодаря оператору вставки (<<). В целом процедура близка к той, что используется при чтении. Вместо создания экземпляра класса if stream, вы создаете экземпляр класса ofstream и начинаете сбрасывать в него данные. Листинг 4.5 содержит программу, которая создает новый файл, записывает в него 10 строк текста и закрывает. Затем файл снова открывается для чтения, его содержимое счи- тывается и выводится на экран.