Image default
C++ Програмування

Введення та виведення даних

Мова програмування С++ підтримує дві повноцінні системи вводу-виводу: одна з них була успадкована від мови С, а інша базується на об’єктно-орієнтованому принципі і притаманна лише мові С++. Не дивлячись на те, що в нових програмах використовуються об’єктно-орієнтовані методи, старі функції введення-виведення і досі широко поширені в програмах написаних на С++.

Основні причини використання старих функцій ведення-виведення:

  • Рано чи пізно, але при вивченні або роботі з мовою програмування С++ ви зіткнетесь зі старими програмами, які написані засобами мови С або строго в процедурному стилі.
  • Мова С зараз майже не використовується при створенні великих комерційних проектів, та більшість програмістів і досі пише свої програми мовою гібридом С\С++.
  • Системи вводу-виводу в мовах С та С++ базуються на однакових принципах.
  • Інколи, при написанні невеликих проектів, засоби вводу-виводу мови С є набагато зручнішими, ніж методи мови С++.

В цій статті Ви сповна відчуєте можливості систем вводу-виводу мови С++. Але перед тим, як поринути у вир функцій та класів, коротко розглянемо, основні принципи роботи цих систем.

Методи виводу мови С++ призначені для великої кількості пристроїв: починаючи від виводу на екран, принтер, дисковод і закінчуючи виведенням інформації у файл. Не дивлячись на таку різноманітність фізичних пристроїв, система мова С++ перетворює їх на деякий  логічний пристрій, який називається потоком. Всі потоки функціонують однаково. Оскільки вони майже не залежать від конкретного пристрою, одна і та ж функція може виводити інформацію як на жорсткий диск, так і в консоль.

Для початку розглянемо форматований ввід-вивід на консоль методами, які прийшли з мови С. Для цього у нас є дві функції: printf()виведення на консоль, scanf()введення з клавіатури.

printf(“керуючий рядок”, …); Дана функція повертає кількість символів, які були нею виведені на екран. У випадку помилки результат буде від’ємним. Функція приймає невизначену кількість аргументів, тому в «керуючому рядку» необхідно вказати специфікатори формату, що починається зі знаку відсотка та коду формату. Для коректного виводу кількість аргументів функції має співпадати з кількістю специфікаторів.

Потрібно пам’ятати, що компілятор не перевіряє керуючий рядок специфікаторів на відповідність аргументам функції, тому вся відповідальність за те як і що буде виведено лягає на плечі користувача.

Специфікатори формату

Код Формат
%c Символ
%d Ціле число зі знаком
%i Ціле число зі знаком
%e Науковий формат
%f Число з плаваючою крапкою
%o Ціле число без знаку у вісімковій системі числення
%s Рядковий
%x Ціле число без знаку в шістнадцятковій системі числення
%p Вказівник

Зокрема, до кожного специфікатора можна застосовувати модифікатор формату. Якщо Ви добре зрозумієте принципи їх використання, то в майбутньому зможете створювати чудовий форматований вивід в консолі таблиць або масивів.

Модифікатори форматів

  • Модифікатор мінімальної ширини поля. Ціле число, що стоїть між символом відсотка та кодом формату, задає мінімальну ширину поля. Якщо рядок коротший за мінімальну ширину поля, то він доповнюється пробілами, якщо довший, то модифікатор буде проігнорований, а текст виведений повністю. Рядок можна доповнювати не тільки пробілами, але й нулями (зручно використовувати для числового виводу), для цього перед числом мінімальної ширини поля варто вказати число «0». %(число нуль)(мінімальна ширина поля)(код специфікатора)
  • Модифікатор точності. Вказується він одразу після мінімальної ширини поля через крапочку. Точне значення модифікатора точності залежить від типу даних, до якого застосовується. Загалом він задає максимальну кількість символів, які можна вивести або кількість цифр після коми в дійсному форматі. Наш специфікатор тепер може виглядати так %(мінімальна ширина поля).(модифікатор точності)(код специфікатора)
  • Вирівнювання виводу. У випадку, коли ширина поля більша, ніж значення що виводиться, то результат прижимається до правого краю. Вирівняти по лівому краю можна поставивши перед мінімальною шириною поля знак «мінус». %-(мінімальна ширина поля).(модифікатор точності)(код специфікатора)

Функція форматованого введення scanf()

scanf (“керуючий рядок”, …); Дана процедура реалізує форматований ввід значень у програму.

У керуючому рядку потрібно використовувати специфікатори формату – аналогічно як і з функцією printf(). Кожному специфікатору у відповідність з ліва на право ставиться змінна. Таблицю специфікаторів можна знайти вище.

Важливе зауваження: аргументами функцію scanf() мають бути адреси змінних (про вказівнки та адреси пам’яті ми поговоримо у наступних розділах).

Для виведення та введення даних в С++ реалізовані цілі бібліотеки класів, методів та змінних для керування ними. Розглянути весь цей матеріал в межах однієї статті неможливо, та й нема потреби робити це зараз.

Для того щоб вивести певні дані необхідно вказати ключове слово cout , оператор  побітового зсуву вліво <<, та все те, що потрібно вивести на дисплей: текст, змінні, символьні константи і т.д.

Керуючі символьні константи мови С++

Символ Виконувана дія
звуковий сигнал
\b пробіл
\n новий рядок
\r повернення каретки
\t горизонтальна табуляція
\v вертикальна табуляція
\\ символ \ — зворотна коса риска
\’ символ ‘ — апостроф
\” символ ” — лапки
\0 нуль-символ
\? знак питання

Для введення даних використовуємо ключове слово cin, оператор побітового зсув вправо >> та ім’я змінної, в яку ми хочемо записати введене з клавіатури значення.

В попередній статті, коли ми розглядали базові типи даних мови С++, мова йшла про тип wchar_t, або тип, який для кодування одного символу використовує два байти. Процес введення та виведення змінних даного типу відрізняється від вищеописаного лише ключовими словами: wout – виведення, win – введення.

Related posts

Тернарний оператор С++

Just_Programmer

Типи даних в С++

Just_Programmer

Програмування лінійних алгоритмів

Just_Programmer

12 коментарів

Leave a Comment