Потоковий ввід-вивід

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра СКС

Інформація про роботу

Рік:
2009
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Інші

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра СКС Звіт з лабораторної роботи № 3 з дисципліни: “ООП” на тему: “ Потоковий ввід-вивід ” Львів 2009 МЕТА РОБОТИ: ПОЗНАЙОМИТИСЯ ІЗ ПОТОКОВИМ ВВОДОМ-ВИВОДОМ. Короткі теоретичні відомості Потоки вводу-виводу в С++ Система вводу-виводу в стандартній бібліотеці С++ реалізована у вигляді потоків. Потік вводу-виводу – це логічний пристрій, який приймає та видає інформацію користувача. Кожен потік зв’язаний з фізичним пристроєм (клавіатура, монітор) або з файлом. Бібліотека потоків iostream реалізована як ієрархія класів та забезпечує широкі можливості для виконання операцій вводу-виводу. Далі наведено призначення деяких класів потокового вводу-виводу: istream – підтримує операції по вводу; ostream – підтримує операції по виводу; iostream – підтримує операції по вводу-виводу; іfstream – підтримує операції по вводу з файлу; ofstream – підтримує операції по виводу у файл; fstream – підтримує операції з файлами по вводу-виводу. Стандартні потоки Коли запускається програма на С++, автоматично створюються чотири стандартних потоки. Табл..1 Потік Призначення Пристрій по замовчуванню  cin Стандартний ввід Клавіатура  cout Стандартний вивід Монітор  cerr Стандартний вивід повідомлень про помилки Монітор  clog Стандартний вивід повідомлень про помилки (буферизований) Монітор   Засоби форматування потоку Табл..2 Функція-член Призначення  width(int wide) Дозволяє задати мінімальну ширину поля для виведення значення. При вводі задає максимальне число символів, що читаються. Якщо значення, що виводиться, має менше символів, чим задана ширина поля, то воно доповнюється символами-заповнювачами до заданої ширини (за замовчуванням - пробілами). Якщо ж значення, що виводиться має більше символів, чим ширина відведеного йому поля, то поле буде розширене.  precision(int prec) Дозволяє прочитати або встановити точність (число цифр після десяткової крапки), з якою виводяться числа з плаваючою крапкою. По замовчуванню числа з плаваючою крапкою виводяться з точністю, рівною шести цифрам.  fill(char ch) Дозволяє прочитати або встановити символ-заповнювач.  З кожним потоком зв'язаний набір прапорців, що керують форматуванням потоку. Вони являють собою бітові маски. Прапорці форматування і їхнє призначення приведені в табл.3. Встановити значення одного або декількох прапорців можна за допомогою функції-члену setf(long mask). Табл..3 Прапорець Призначення  dec Встановлюється десяткова система числення  hex Встановлюється шістнадцяткова система числення  oct Встановлюється вісімкова система числення  scientific Числа з плаваючою крапкою, виводяться в науковому записі (тобто n.хххЕуу)  showbase Виводиться основа системи числення у виді префікса до цілого числового значення (наприклад, число 1FE виводиться як 0x1FE)  showpos При виводі позитивних числових значень виводиться знак плюс  uppercase Замінюються визначені символи нижнього регістра на символи верхнього регістра (символ "е" при виведенні чисел в науковому записі – на "Е" і символ "х" при виведенні чисел в шістнадцятковій системі – на "X")  left Дані при виведенні вирівнюються по лівому краю поля виводу  right Дані при виведенні вирівнюються по правому краю поля виводу  internal Додаються символи-заповнювачі між усіма цифрами і знаками числа для заповнення поля виводу  skipws Ведучі символи-заповнювачі (знаки пробілу, табуляції і переходу на новий рядок) відкидаються   Табл..4 Маніпулятор Призначення  endl Виводить символ нового рядка та очищує потік  flush Видає вмістиме буфера потоку у пристрій  dec Встановлює десяткову систему числення  hex Встановлює шістнадцяткову систему числення  oct Встановлює вісімкову систему числення  setbase (int base) Задає основу системи числення для цілих чисел (8,10,16)  setfill (int c) Встановлює символ-заповнювач  setprecision (int n) Встановлює точність чисел з плаваючою крапкою  setw(int n) Встановлює мінімальну ширину поля виводу  setiosflags (iosbase::long mask) Встановлює ios-прапорці згідно з mask   Файловий ввід-вивід Для виконання операцій з файлами передбачено три класи: іfstream, ofstream і fstream. Ці класи є похідними від класів іstream, ostream і іostream. Всі функціональні можливості (перевантажені операції << та >> для вбудованих типів, функції і прапорці форматування, маніпулятори й ін.), що застосовуються до стандартного вводу та виводу, можуть застосовуватися і до файлів. Існує деяка відмінність між використанням стандартних та файлових потоків. Стандартні потоки можуть використовуватися відразу після запуску програми, тоді як файловий потік спочатку слід зв'язати з файлом. Для реалізації файлового вводу-виводу потрібно підключити заголовочний файл fstream.h. Режими відкриття файлів та їхнє призначення наведені у табл.5. Табл..5 Режим відкриття Призначення  іos::іn Відкрити файл для читання  іos::out Відкрити файл для запису  іos::ate Відкрити файл для додавання в кінець  іos::app Відкрити файл для додавання в кінець  іos::trunc Усікти файл, тобто видалити його вміст  іos::bіnary Відкрити файл у двійковому режимі   Завдання З клавіатури вводиться назва товару та його ціна Виконання роботи #include <iostream> #include <fstream> #include <conio.h> #include <string> using namespace std; int main(){ int f; string tovar; double cina; do { cout << "add to file - 1\n" << "view file - 2\n"; f=_getch(); } while ((f!=49)&&(f!=50)); if(f==50){ ifstream ifile("sklad.txt",ios::in); if (!ifile){ cout << "file not found.\n"; return -1; } cout << "tovar " << " cina" << endl; while (!ifile.eof()){ tovar = ""; cina = 0; ifile >> tovar; cout.width (15); cout.setf (ios::left); if (tovar==""){continue;}; cout << tovar; ifile >> cina; cout.width (5); cout << cina << endl; } ifile.close (); }else{ ofstream ofile("sklad.txt",ios::app); if (!ofile){ cout << "file not open.\n"; return -1; } cout << "Tovar: "; cin >> tovar; cout << "Cina: "; cin >> cina; ofile.width (15); ofile.setf (ios::left); ofile << tovar; ofile.width (5); ofile << cina << endl; ofile.close (); } return 1; } Результати роботи програми Tovar cina Fhsjdhf 56 Dsadas 67 Hfjdhfjk 3 Висновок: я познайомився з потоковим вводом-виводом і виконав свій варіант завдання.
Антиботан аватар за замовчуванням

25.03.2013 23:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!