Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л10. Потоки в С++.doc
Скачиваний:
3
Добавлен:
21.09.2019
Размер:
125.44 Кб
Скачать

Параметризовані маніпулятори

Нижче перераховані маніпулятори, що вимагають задання аргументу. Для їх використання потрібно підключити до програми файл заголовків <iomanip.h>.

setbase(int n) — задає основу системи числення (n = 8, 16, 10 або 0).;

resetiosflags(long) — скидає прапорці стану потоку, біти яких встановлені в параметрі;

setiosflags(long) — встановлює прапорці стану потоку, біти яких в параметрі рівні 1;

setfill(int) — встановлює символ-заповнювач з кодом, рівним значенню параметра;

setprecision(int) — встановлює максимальну кількість цифр в дробовій частині для дійсних чисел;

setw(int) — встановлює максимальну ширину поля .

Приклад використання параметризованих маніпуляторів:

#include <iostream.h>

#іnclude <iomanip.h>

int main() {

double d[] = (1.234, -12.34567, 123.456789, -1.234, 0.00001};

cout << setfill ( '.' ) << setprecision (4)

<< setiosflags(ios :: showpoint | ios :: fixed);

for (int і = 0; i < 5; i++)

cout << setw(12) << d[i] <<endl;

return 0; }

Результат роботи програми:

......1.2340

....-12.3457

....123.4568

.....-1.2340

......0.0000

Методи обміну з потоками

У потокових класах поряд із операціями >> та << визначені методи для неформатованого читання і запису в потік (при цьому перетворення даних не виконуються).

Нижче наведені функції читання, визначені в класі istream.

gcount() — повертає кількість символів, за допомогою останньої функції неформатованого введення:

get() — повертає код вилученого потоку символу або ЕOF;

get(c) — повертає на потік, з якого виконувалося читання, і записує зчитаний символ в с;

get (buf, num, lim = '\n' ) – зчитує num-1 символів (або поки не зустрінеться символ lim) і копіює їх в символьний рядок buf. Замість символу lim в рядок записується ознака кінця рядка ('\ n '). Символ lim залишається в потоці. Повертає посилання на поточний потік;

getline(buf, num, lim = '\n') — аналогічна функції get, але копіює в buf і символ lim;

putback(c) — поміщає в потік символ с, який стає поточним при вилученні з потоку;

read(buf, num) — зчитує num символів (або всі символи до кінця файлу, якщо їх менше num) у символьний масив buf і повертає на поточний потік;

seekg(pos) — встановлює поточну позицію читання в значення pos;

seekg(offs,org) — переміщає поточну позицію читання на offs байтів, рахуючи від однієї з трьох позицій, визначених параметром org: ios::beg (від початку файлу). ios::cur (від поточної позиції) або ios::end (від кінця файлу);

tellg() — повертає поточну позицію читання потоку;

unget() — поміщає останній прочитаний символ в потоки повертає на поточний потік.

У класі ostream означені аналогічні функції для неформатованого запису:

flush() — записує вміст потоку на фізичний пристрій;

put(c) — виводить в потік символ с і повертає на потік;

seekg(pos) — встановлює поточну позицію запису в значення pos;

seekg (offs, org) — переміщає поточну позицію запису на offs байтів, рахуючи від однієї з трьох позицій, визначених параметром org: ios::beg (від початку файлу), ios::cur (від поточної позиції) або ios::end (від кінця файлу);

tellg() — повертає поточну позицію запису потоку;

write(buf, num) — записує в потік num символів з масиву buf і повертає на потік.

Приклад. Програма зчитує рядки з вхідного потоку в символьний масив.

#include <iostream.h>

int main(){

const int N = 20, Len = 100;

char str[N][Len];

int i = 0;

while (cin.getline(str[i], Len, '\n') && i<N)

{ //....

i++ ;}

return 0;}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]