Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Приклад 1. Простий приклад потокового вводу-виводуСодержание книги
Поиск на нашем сайте
#include <iostream.h>
void main() { int a; char c; float f; double d;
cin >> a; cin >> c; cin >> f; cin >> d;
cout << a; cout << c; cout << f; cout << d; cout << “\nThis is a short string”;
cout << “\nAnd this is a three” << “\nline message that” << “\nis a little longer”; } С++ підтримує визначення стандартних шляхів вводу і виводу даних, але замість файлів використовуються потоки. Потік cin – стандартний символьний потік вводу, зазвичай пов’язаний з клавіатурою. Він замінює stdin, який використовувався з тією ж метою в ANSI C. Потік cout подібний до stdout і зазвичай пов’язанй з таким символьним вивідним пристроєм, як дисплей персонального комп’ютера. Крім цього, в Borland C++ визначені і інші стандартні потоки: cerr (замінює stderr як стандартний потік виводу) і clog (аналога якому в ANSI C не було). Потік clog подібний до cerr, але забезпечує буферизацію, тоді як cin, cout і cerr її не забезпечують. Кожен з цих чотирьох потоків розглядається окремо. Чотири стандартних потоки cin, cout, cerr і clog автоматично відкриваються до початку виконання функції main() і закриваються після її завершення. Так що не слід турбуватися про оголошення, відкриття і закриття потоків. А ось очищення потоків в залежності від вимог програми слід включити (#include) стандартний заголовочний файл iostream.h. Об’єкт потоку повинен стояти в лівій частині операторів << або >>. Кілька потокових операцій, навіть тоді, коли вони відносяться до об’єктів різних типів, можуть бути об’єднані в одну стрічку. Комбінація символів >> називається оператором вилучення, оскільки вони використовуються для отримання символів з потоку. Символи << називаються оператором вставки, оскільки використовуються для поміщення символів в потік. Приклад 1 можна переписати наступним чином:
void main() { int a; char c; float f; double d;
cin >> a >> c >> f >> d; //ввід всіх даних cout << a << c << f << d; //вивід всіх даних
Компілятор відслідковує перетворення типів і форматування даних. З першого оператора компілятор генерує чотири окремих операції вводу (по одній для кожної змінної). Оператор >> – ліво-асоціативний, тому змінна a читається перед змінною c. З другого оператора отримуємо чотири операції виводу. Оператор <<, як і оператор >>, ліво-асоціативний, тому a виводиться перед c. Форматування здійснюється автоматично самим потоком, що знижує рівень необхідних подробиць до мінімального. Керувати форматуванням можна за допомогою спеціальних функцій-маніпуляторів. Введення у ANSI C, на відміну від С++, вимагало від програміста передавати кілька аргументів, що збільшувало імовірність помилок. Підводним каменем в С, об який спотикалися дуже багато програмістів, було використання старих функцій scanf(...) і printf(...) для того, щоб зробити щось, подібне до наступного:
int i; float f; scanf(“%d”, i); /*передача параметра по значенню*/ printf(“%d”, f); /*неправильний форматуючий символ*/
замість правильного запису:
int i; float f; scanf(“%d”, &i); /*це правильно*/ printf(“%f”, f); /*і це вірно*/
3. Введення-виведення типів char i char*
Символьні операції в потоках гранично прості, оскільки не потребують ніякого форматування. Зчитуючи дані з потоку, треба мати на увазі, що все, що зчиталося, розглядається як символи, в тому числі і роздільники (або символи пропуску – while space character). Роздільниками є пробіл, табуляція, переведення стрічки або символ, який зазвичай використовується для розділення елементів даних. Якщо серед символів, що зчитуються, є службові, то вони повинні бути оброблені самим програмістом або маніпулятором, котрому явно належить це зробити. Приклад 2 показує вилучення символів з потоку. Приклад 2. Коротка програма, що вилучає символи з потоку #include <iostream.h>
void main() { char c; cout << “\nHit a key ”;
cin >> c; cout << “\nThe key typed was: ” << c; } Програма відображає на екрані повідомлення і потім чекає натискання довільної клавіші і повернення каретки. Після цього за допомогою оператора вилучення читається потік cin, і прочитане значення використовується в операторі виводу. Щоб ввести дані в програму, користувач повинен натиснути <Enter>. Читання вхідного символа без натискання <Enter> можна виконати за допомогою непотокової функції, що підтримує ввід необроблених даних, наприклад getch() або getche():
char c = gecht();
якщо програма буде вимагати саме такої поведінки потоку cin, то слід створити новий похідний клас, що забезпечує потрібну поведінку.
|
||||||||||
Последнее изменение этой страницы: 2016-04-26; просмотров: 337; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.222.132 (0.007 с.) |