Глава 7. Организация ввода-вывода в C++
Например, для записи в поток F переменной a оператор вывода будет иметь
вид:
F<Для последовательного вывода в поток G переменных b, c и d оператор вывода
станет таким:
G<Закрытие потока
осуществляется с помощью оператора:
F.close();
В качестве примера рассмотрим следующую задачу.
Задача 7.1.
Создать текстовый файл abc.txt и записать туда n вещественных
чисел.
Текст программы с комментариями:
#include
#include
#include
using namespace s t d ;
i n t main ( )
{
i n t i , n ; double a ;
o f s t r e a m f ; //Описывает поток для записи данных в файл.
f . open ( " a b c . t x t " ) ; //Открываем файл в режиме записи,
//режим ios::out устанавливается по умолчанию.
cout<<" n = " ; c i n >>n ; //Ввод количества вещественных чисел.
f o r ( i =0; i {
cout<<" a = " ; c i n >>a ; //Ввод очередного числа.
i f ( i −1) //Если число не последнее,
f <e l s e f <}
f . c l o s e ( ) ; //Закрытие потока.
return 0 ;
}
Обратите внимание, что в текстовый файл записываются не только веще-
ственные числа, но и символы табуляции. Таким образом, в конце файла после
последнего числа находится символ табуляции. По этой причине может возник-
нуть проблема при чтении информации (п. 7.2.2), так как символ табуляции
будет интерпретирован как вещественное число. Чтобы этого избежать в про-
грамме была применена следующая конструкция:
if (iЗдесь реализована проверка ввода последнего числа. После него символ та-
буляции отсутствует.
В результате работы программы будет создан текстовый файл abc.txt, ко-
торый можно просмотреть средствами обычного текстового редактора (рис. 7.1–
7.2).
7.2.2
Чтение информации из текстового файла
Для того, чтобы прочитать информацию из текстового файла, необходимо
описать переменную типа ifstream. После этого файл необходимо открыть для
Программирование на языке С++ в среде Qt Creator
7.2. Работа с текстовыми файлами в C++
233
Рис. 7.1: Процесс работы программы к задаче 7.1. Ввод исходных данных.
Рис. 7.2: Текстовый файл abc.txt, созданный программой к задаче 7.1.
чтения с помощью оператора open. Если переменную назвать F, то первые два
оператора будут такими:
ifstream F;
F.open("abc.txt", ios::in);
8
После открытия файла в режиме чтения, из него можно считывать инфор-
мацию точно так же, как и с клавиатуры, только вместо стандартного устройства
ввода cin необходимо указать имя потока, из которого будет происходить чтение
данных.
Например, для чтения из потока F в переменную a оператор ввода будет иметь
вид:
F>>a;
Для последовательного ввода из потока G в переменные b, с и d оператор
ввода станет таким:
G>>b>>c>>d;
8
Указание режима ios::in можно, конечно, опустить, ведь для потока ifstream значение
ios::in
является значением по умолчанию, тогда оператор open можно будет записать так
F.open("abc.txt");
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.
234
Do'stlaringiz bilan baham: |