Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Відповіді на питання по мові С++по лекціям.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
265.22 Кб
Скачать
  1. Порядкове читання вводу.

Функція cin дозволяє введення одного слова. У класі istream, крім функції cin є функції-члени, які призначені для рядково-оріентовного вводу: getline () та get(). Обидві читають рядок введення аж до символу переведення рядка. Однак, getline () відкидає символ переведення рядка, а get() – залишає його у вхідний черзі.

Функція getline () читає цілий рядок, використовуючи символ переводу <Enter>, для визначення кінця вводу. Цей метод викликає функцію cin.getline (), яка приймає два значення. Перший аргумент – ім’я масиву призначення, який зберігає введений рядок, а другий – максимальну кількість символів, що пропонуються для читання. Наведемо приклад виклику функції: cin.getline (name, 20);

Він читає повний рядок у масиві name, припускаючи, що рядок має не більш 19 символів.

  1. Що робить функція-член get ()?

Клас istream включає функцію-член get (), яка має різні варіанти. Один з них працює як getline (). get () не відкидає символ переводу рядка, а залишає його у вхідній черзі. Виклик cin.get () без аргументу читає єдиний наступний символ, навіть коли це буде символ нового рядка, тому можна використовувати його для того, щоб відкинути символ нового рядка та підготовлюється до введення наступного рядка.

cin.get (name, ArSize); //читає перший рядок

cin.get (); //читає символ переводу рядка

cin.get (dessert, Arsize); //читає другий рядок

Другий спосіб застосовує get () при конкатенації, або об’єднанні, двох викликів функцій-членів класу, як розглядається на наступному прикладі:

cin.get (name, ArSize).get ();Ця можливість забезпечує те, що cin.get (name, ArSize) повертає сам об’єкт cin, який потім використовується як об’єкт, викликаючи функцію get (). Аналогічно працює наступний оператор:

cin.getline (name1, ArSize). getline (name1, ArSize);

читає обидва послідовна у масив рядка name1 та name2, що еквівалентно двом викликам cin.getline ().

Функція getline () простіше у застосуванні, але get () спрощує перевірку помилок.

Після того, як функція get () (але не getline ()) читає порожній рядок, вона встановлює прапорець , який має назву failbit. Цей прапорець блокує наступний ввід, але його можливо відновити наступною командою:

cin.clear ();

Коли вхідний рядок довший, чим вказана кількість символів, то і get (), і getline () залишають надлишкові символи у вхідній черзі. Однак, getline () додатково встановлює failbit і відключає наступний ввід.

Змішування числового вводу з рядковим може викликати проблеми.

ЛЕКЦІЯ 7

  1. Клас string.

У мові C++ замість використання символьних масивів для збереження рядків можна застосувати змінні типу string. Клас string повинний бути включений у заголовочний файл string. Клас string є частиною простору імен std, тоді ви повинні вказати директиву using або звертатися до класу по імені std::string. Визначення класу ховає природу рядка як масиву символів та дозволяє як трактовані звичайні змінні. Головне, що об’єкт string об’являється як звичайна змінна, а не як масив. Концептуально головним є те, що масив рядків – це колекція сховищ окремих символів, які складають рядок, а клас string – єдина сутність яка представляє рядок. Деякі операції з рядками клас string виконує простіше, чим це можливо у випадку з символьними масивами. Об’єкт string можна присвоїти іншому. Також можна застосувати операцію додавання двох об’єктів string разом та операцію += для того, щоб з’єднати рядок з існуючим об’єктом string. Деякі операції з рядками клас string виконує простіше, чим це можливо у випадку з символьними масивами. Об’єкт string можна присвоїти іншому. Також можна застосувати операцію додавання двох об’єктів string разом та операцію += для того, щоб з’єднати рядок з існуючим об’єктом string. Заголовочний файл cstring (колишній cstring.h) підтримує ці функції.

  1. Додаткові відомості про рядковий ввід-вивід.

Можна використовувати cin з операцією >> для читання об’єкту string та cout з операціею << – для от ображення об’єкту string, причому з тим же синтаксисом, що і у випадку рядків у стилі С.

  1. Яка довжина рядка str перед введенням?

Довжина рядка str перед введенням дорівнює 0. Це пояснюється тим, що розмір ініціалізовного об’єкту string автоматично встановлюється у 0.

  1. На що вказує точкова нотація?

Точкова нотація вказує на те, що функція getline () – це метод класу istream. (cin – це об’єкт класу istream.). Перший аргумент задає цільовий масив, а другий – його розмір, використовуючи getline () для того, щоб уникнути переповнення масиву. Наступний код читає рядок у об’єкт string:

getline (cin, str);

У даному випадку getline приймає об’єкт cin як аргумент, який повідомляє де шукати ввід.

  1. Що таке структура даних?

Структура – це більш багатостороння форма даних, чим масив, тому що вона здатна зберігати елементи більш чим одного типу. Тип структури – це ще один крок до ООП С++ - класу. Структура – це визначений користувачем тип з об’явою, яка описує властивості типа. Після визначення типу, можна створити змінну цього типу. Створення структури – це двофазний процес. По-перше, визначається опис структури, яка перераховує і іменує типи даних, котрі можуть бути збережені у структурі. Потім створюються структурні змінні або, як кажуть інакше, структурні об’єкти даних, котрі слідують плану, який заданий об’явою