КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Читання слів з клавіатури
Читання символьних даних Стежте за помилками неспівпадання типів Стежте за помилками переповнювання Якщо ваші програми виконують введення з використанням cin, остерігайтеся можливих помилок, що виникають при введенні користувачем невірного числа. Наприклад, запустите програму, яку ви тільки що створили. Коли програма запитає вас ввести ваше улюблене число, введіть число 1000000 і натисніть ENTER. При цьому програма не зможе відобразити число 1000000 як введене значення. Натомість виникне помилка переповнювання, оскільки 1000000 перевищує найбільше значення, яке може зберігати тип int. Якщо ви уважно розглянете програму, то звернете увагу, що cin присвоює введене число змінної типу int. Як вже обговорювалося, програма припускає, що користувач вводить значення в діапазоні від -32768 до 32767. Якщо замість введення числа поза цим діапазоном, користувач вводить букви або інші символи, то виникає інша помилка — помилка неспівпадання типів. Іншими словами, програма чекала значення одного типу (int), а користувач ввів значення іншого типу (char). Наступна програма читає символ в змінну типу char #include <iostream.h> void main(void) { char letter; cout «"Введіть будь-який символ і натисніть Enter: "; cin» letter; cout «"Був введений символ " «letter «endl; } Наступна програма використовує 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 };Розглянемо що роблять перераховані вище прапори.
Тепер необхідно познайомитися з функціями, які встановлюють і скидають ці прапори. Перша функція, яку ми розглянемо, - це функція setf(), використовувана для установки прапорів Функція приймає як параметр розглянуті вище прапор або прапори, сполучені між собою за допомогою побітового АБО. Вона повертає попереднє значення прапора. Розглянемо приклад: 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 (i o s:: 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Окрім прапора форматування також можна встановити ширину поля потоку, символ для заповнення і число цифр після десяткової коми. Для цього використовуються наступні функції: Функція width() встановлює ширину поля і повертає поточну ширину. Друга функція - fill() встановлює поточний символ заповнення і повертає попередній символ заповнення. За умовчанням використовується пропуск. А функція precision встановлює точність чисел з плаваючою крапкою. У науковому режимі ця функція визначає кількість цифр після десяткової коми. У звичайній нотації функція позначає кількість цифр, що виводяться. Точність, встановлена за умовчанням, рівна 6. Функція width() впливає тільки на одне виведення інформації, а після цього в дію вступають параметри прийняті за умовчанням. У випадку з рештою двох функцій нові установки залишаються діяти до їх явного оновлення. Приведемо приклад: cout. width (10); cout. fill('*'); cout<<123<<"\n"; cout. width (10); cout<<456<<"\n\n"; cout<<"Using precision \n"; float price1 = 20.405f; float price2 = (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 Маніпулятори без параметрів:
Дата добавления: 2014-12-07; Просмотров: 390; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |