Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Читання слів з клавіатури




Наступна програма використовує cin для читання значення типу long:

# iostream.h>

void main(void)

{

long value;

cout « "Введіть велике число і натисніть Enter: ";

cin » value;

cout « "Вило введено число " « value « endl;}


 

Форматування введення-виведення засобами мови С++

Існують два способи форматування введення/виведення.

Перший спосіб передбачає використання функцій для установки певних прапорів форматування, які перераховані в класі ios_base

enum { skipws = 0x0001 left = 0x0002 right = 0x0004 internal = 0x0008 dec = 0x0010 oct = 0x0020 hex = 0x0040 showbase = 0x0080 showpoint = 0x0100 uppercase = 0x0200 showpos = 0x0400 scientific = 0x0800 fixed = 0x1000 unitbuf = 0x2000 stdio = 0x4000 };

Розглянемо що роблять перераховані вище прапори.

Прапор Опис  
skipws Наступні на початку символи-роздільники (пропуски, символи табуляції і нового рядка) при виконанні введення відкидаються.
left Здійснюється введення з лівим вирівнюванням
right Здійснюється введення з правим вирівнюванням (за умовчанням)
internal Знак або префікс системи числення вирівнює зліва, число вирівнює справа
dec Чисельні значення виводяться в десятковій формі (за умовчанням)
oct Чисельні значення виводяться у вісімковій формі
hex Чисельні значення виводяться в шістнадцятковій формі
showbase Дозволяє при виведенні указувати числову базу (десяткову, вісімкову, шістнадцяткову)
showpoint Приводить до виведення десяткової коми і нулів справа для всіх чисел з плаваючою комою поза залежністю, потрібно це чи ні
uppercase При виведенні чисел з плаваючою крапкою при використанні експоненціальної форми виводиться велика буква E. Також при виведенні чисел в шістнадцятковій формі символ 'x' виводиться у верхньому регістрі.
showpos Призводить до того, що перед додатнім числом буде виводиться знак "+"
scientific Числа з плаваючою комою виводяться з використанням наукової нотації
fixed Числа з плаваючою комою виводяться в нормальній нотації
unitbuf При кожній операції вставки виведення дані негайно заноситься в потік
             

Тепер необхідно познайомитися з функціями, які встановлюють і скидають ці прапори.

Перша функція, яку ми розглянемо, - це функція setf(), використовувана для установки прапорів

long setf(long flags);

Функція приймає як параметр розглянуті вище прапор або прапори, сполучені між собою за допомогою побітового АБО. Вона повертає попереднє значення прапора. Розглянемо приклад:

cout.setf(ios::hex); cout.setf(ios::showpos); cout<<123<<" "<<123.45<<"\n"; cout<<67<<" "<<678.9<<"\n";виведе на екран 7b +123.45 43 +678.9 теж саме буде на екрані після виконання наступного коду cout.setf(ios::hex | ios::showpos); cout<<123<<" "<<123.45<<"\n"; cout<<67<<" "<<678.9<<"\n";

Для відключення встановлених прапорів потрібно використовувати функцію unsetf(). Вона має наступний прототип:

long unsetf(long flags);

Функція повертає значення попередньої установки прапора і скидає прапори, визначувані параметром flags. Приклад:

cout.setf(ios::showpos | ios::hex); cout<<123<<" "<<123.45<<"\n"; cout.unsetf(ios::showpos | ios::hex); cout<<123<<" "<<123.45<<"\n";виведе на екран 7b +123.45 123 123.45

Окрім прапора форматування також можна встановити ширину поля потоку, символ для заповнення і число цифр після десяткової коми. Для цього використовуються наступні функції:

int width(int len);char fill(char ch);int precision(int num);

Функція width() встановлює ширину поля і повертає поточну ширину. Друга функція - fill() встановлює поточний символ заповнення і повертає попередній символ заповнення. За умовчанням використовується пропуск. А функція precisionвстановлює точність чисел з плаваючою крапкою. У науковому режимі ця функція визначає кількість цифр після десяткової коми. У звичайній нотації функція позначає кількість цифр, що виводяться. Точність, встановлена за умовчанням, рівна 6. Функція width() впливає тільки на одне виведення інформації, а після цього в дію вступають параметри прийняті за умовчанням. У випадку з рештою двох функцій нові установки залишаються діяти до їх явного оновлення. Приведемо приклад:

cout.width(10); cout.fill('*'); cout<<123<<"\n"; cout.width(10); cout<<456<<"\n\n"; cout<<"Using precision\n"; floatprice1 = 20.405f; floatprice2 = (float)1.9+8.0/9.0; cout<<price1<<"\n"<<price2<<"\n\n"; cout.precision(2); cout<<price1<<"\n"<<price2<<"\n\n"; cout.setf(ios::scientific); cout<<price1<<"\n"<<price2<<"\n\n"; виведе на екран *******123 *******456 Using precision 20.405 2.78889 20 2.8 2.04e+001 2.79e+000

Другий спосіб - це використання маніпуляторів.

Маніпулятори є спеціальними функціями, які дозволяють змінювати прапори потоку. Існують маніпулятори з параметрами і без. Якщо Ви використаєте маніпулятори з параметрами, підключите файл iomanip.h

Маніпулятори без параметрів:

ends - поміщає у вихідний потік нульовий символ;  
endl поміщає у вихідний потік символ кінця рядка і викликає метод flush;
flush вивантажує буфер потоку;
dec, hex, oct встановлюють підстави 10, 16 і 8 відповідно;
ws примушує ігнорувати провідні пропуски при введенні.
       

Поделиться:

Дата добавления: 2014-12-03; просмотров: 238; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты