Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмизация и программирование.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.59 Mб
Скачать

7.3. Открытие текстового файла для чтения

Для открытия файла для чтения используются переменная fstream file; оператор <переменная_потока>.open(путь_к_файлу, режим);

Для закрытия файла используется оператор <переменная_потока>.close();

Пример: открытие файла1 для чтения из колонки вещественных чисел оператором while.

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

int n=-1; float a; //считывание данных на 1 больше

fstream file1; //открываем файл в режиме чтения

file1.open("C:\\SOURCE\\qwerty.dot");

while (!file1.eof())

{

n++;

file1>>a;

cout<<a<<endl;

}

file1.close();

cout<<endl; cout<<"n="<<n<<endl;

return 0;

}

Поскольку символ конец файла находится в 6-ой строке, то при использовании оператора while последнее значение переменной выводится дважды.

Пример: открытие файла1 для чтения из колонки 5 записанных вещественных чисел оператором for.

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

int i; float a;

fstream file1; //открываем файл в режиме чтения

file1.open("C:\\SOURCE\\qwerty.dot");

for (i=1; i<=10; i++)

{

file1>>a;

cout<<a<<endl;

}

file1.close();

cout<<endl; cout<<"i="<<i<<endl;

return 0;

}

Поскольку в операторе for число считываний равно 10, то последнее значение переменной выводится 5 раз. Получим на экране 1 2 3 4 5 5 5 5 5 5.

Пример: открытие файла3 для чтения произвольного числа строк (с уничтоженной строкой eof).

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

int n=-1; string str; //считывание данных на 1 больше

fstream file3; //открываем файл в режиме чтения

file3.open("C:\\SOURCE\\qwerty.dot");

while (!file3.eof())

{

n++;

getline(file3,str);

cout<<str<<endl;

}

file3.close();

cout<<endl; cout<<"n="<<n<<endl;

return 0;

}

При чтении файла3 имеем

Иванов – 36 лет

Петров – 17 лет

Сидоров – 50 лет

Пример: открытие файла4 для чтения символьного массива.

#include <iostream> //библиотека ввода/вывода

#include <iostream> //библиотека ввода/вывода

#include <windows.h> //установка команд операционной системы

#include <cstdio> //для функции gets()

#include <fstream> //потоки ввода/вывода в файлы;

using namespace std;

int main()

{

char string[80]; fstream file4;

file4.open("C:\\SOURCE\\qwerty.txt", fstream::in);

int size(0); //int size=0;

while(!file4.eof()) //определение длины текста

{

file4.get(string[size]);

cout<<string[size];

size++;

}

file4.close(); cout<<"\r";

char y1=string[3]; cout<<" y1="<<y1<<endl;

char y2=string[31]; cout<<" y2="<<y2<<endl;

return 0;

}

При открытии строчного файла предыдущего примера получим следующее заполнение массива string (рис. 9.1):

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

y

1

=

3

-

п

е

р

в

а

я

ц

и

ф

р

а

з

а

ч

е

т

к

и

CR

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

y

2

=

7

-

в

т

о

р

а

я

ц

и

ф

р

а

з

а

ч

е

т

к

и

CR

Рис. 7.1. Заполнение массива

Теперь, чтобы получить численное значение численной переменной y1 следует код цифры перевести в число: int y1=string[3]; y1=y1-48;

Задание 1. Выполнить лабораторную работу 7 (Операции с файлами).

Задание 2. Выполнить лабораторную работу 7a (Операции с файлами).

При выполнении курсовой работы требуется создать два программных файла (generation.exe, request.exe) и два текстовых файла (qwerty.dot, zxcvbn.dot).