Урок №218. Потокові класи і Рядки

  Юрій  | 

  Оновл. 29 Кві 2021  | 

 71

У Стандартній бібліотеці С++ є окремий набір класів, які дозволяють використовувати вже знайомі нам оператори вставки (<<) і вилучення (>>) з рядками.

Потокові класи

Як і istream з ostream, так і потокові класи для рядків надають буфер для зберігання даних. Однак, на відміну від cin і cout, ці потокові класи не підключені до каналу вводу/виводу (тобто до клавіатури, монітора тощо).

Є 6 потокових класів, які використовуються для читання і запису рядків:

   клас istringstream (є дочірнім класу istream);

   клас ostringstream (є дочірнім класу ostream);

   клас stringstream (є дочірнім класу iostream);

   клас wistringstream;

   клас wostringstream;

   клас wstringstream.

Щоб використовувати клас stringstream, потрібно підключити заголовок sstream. Щоб додати дані в stringstream, ми можемо використати оператор вставки (<<):

Або функцію str(string):

Аналогічно, щоб отримати дані назад з stringstream, ми можемо використати функцію str():

Результат:

336000 12.14

Або оператор вилучення (>>):

Результат:

336000 and 12.14

Зверніть увагу, оператор вилучення (>>) перебирає буфер, автоматично розбиваючи його на окремі значення за допомогою наявних пробілів (тобто одне використання оператора вилучення (>>) дорівнює одному значенню з буфера). У той час, як функція str() повертає всі дані з потоку (не частково, а повністю), навіть якщо перед нею використовувався оператор вилучення.

Конвертація рядків у числа і навпаки

Ми можемо використовувати оператори вставки і вилучення з рядками для їх конвертації в числа і навпаки. Наприклад, конвертація чисел в рядки:

Результат:

336000 12.14

А тепер конвертація (числового) рядка назад в числа:

Результат:

336000 12.14

Очищення stringstream для повторного використання

Є кілька способів очистити буфер stringstream:

Спосіб №1: Використати функцію str() з пустим рядком C-style.

Спосіб №2: Використати функцію str() з пустим об’єктом std::string:

Результат виконання вищенаведених програм:

World!

При очищенні stringstream непоганою ідеєю є виклик функції clear():

Функція clear() скидає всі флаги помилок, які були раніше встановлені, і повертає потік назад в його колишній (без помилок) стан. Ми поговоримо детально про стани потоку і флаги помилок на наступному уроці.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (Немає Оцінок)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *