КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Открытие текстового файла для чтения
Eof Для избавления от внесенной строки eof следует в редакторе Notepad уничтожить эту строку.
Запись в файл символьного массива фиксированной длины и фиксированного числа строк может осуществляться следующим образом. Пример: открытие файла4 для записи символьного масива длиной 80 литер в 3 строки. y1=3 – первая цифра зачетки y2=7 – вторая цифра зачетки #include <iostream> //библиотека ввода/вывода #include <windows.h> //установка команд операционной системы #include <cstdio> //для функции gets() #include <fstream> //потоки ввода/вывода в файлы; using namespace std; string Rus(string text) //установка вывода русского языка в строке { CharToOem((LPCTSTR)text.c_str(), (LPSTR)text.c_str()); return text; } int main() { int i,n=3; //объявляется число строк для отображения на экране char str[80]; //объявляется длина символьного массива fstream file4; //объявляется имя потока для записи данных в файл file4.open("C:\\SOURCE\\qwerty.txt", ios::out); cout<<Rus("Введите данные: ")<<endl; for (i=0; i<n; i++) { gets(str); //считывание одной строки с консоли file4<<str<<endl; //запись строки в файл } file4.close(); //закрытие потока return 0; } При использовании этого способа нужно четко следить за количеством строк и размером символьного массива. Созданный файл С:\\SOURCE\\qwerty.txt можно прочитать любым текстовым редактором с установкой кодировки CP866. При использовании MS Word следует: Open with/Microsoft OfficeàWord/MS-DOS, а при использовании Notepad – Open with/Notepad (Format/Font/Terminal).
Для открытия файла для чтения используются переменная 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):
Теперь, чтобы получить численное значение численной переменной y1 следует код цифры перевести в число: int y1=string[3]; y1=y1-48; Задание 1. Выполнить лабораторную работу 7 (Операции с файлами). Задание 2. Выполнить лабораторную работу 7a (Операции с файлами).
Дата добавления: 2014-11-25; Просмотров: 405; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |