![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 341; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.219.101.224 (0.009 с.) |