C++ за 21 день седьмое издание


Важнейшие классы и объекты потоков C++



Download 1,38 Mb.
bet407/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   403   404   405   406   407   408   409   410   ...   437
Bog'liq
word1

Важнейшие классы и объекты потоков C++

Язык C++ предоставляет набор стандартных классов и заголовков, позволяющих вы­ полнять ряд наиболее важных и популярных операции ввода и вывода. Табл. 27.1 содер­ жит список наиболее часто используемых классов.






Важнейшие классы и объекты потоков C++

589

Т А Б Л И Ц А 2 7 .1 . Наиболее популярные классы потоков C++ пространства имен s td




Класс или объект

Задача




cout

Стандартный поток вывода, как правило, переадресовываемый на




cin

консоль




Стандартный поток ввода, как правило, используемый для чтения




cerr

данных в переменные




Стандартный поток вывода для ошибок




fstream

Класс потока ввода и вывода для файловых операций; происходит от

ofstream

классов ofstream и ifstream




Класс потока вывода для файловых операций, обычно используется

ifstream

для создания файлов




Класс потока ввода для файловых операций, обычно используется







для чтения из файла







stringstream
ПРИМЕЧАНИЕ

Класс потока ввода и вывода для строковых операций; происходит от классов istringstream и ostringstream; обычно используется для преобразования в строки (или из строк), а также другие типы


Объекты cout, cin и cerr являются глобальными объектами потоковых классов ostream, istream и ostream соответственно. Будучи глобальными объектами, они инициализируются перед запуском функции main ().

При использовании потокового класса есть возможность определения манипуляторов (manipulator), которые автоматически выполняют специфические действия самостоятель­ но. Одним из них является манипулятор s t d : :e n d l, который вы использовали для встав­ ки символа новой строки:




std::cout « "This lines ends here" « std::endl;

Несколько других подобных манипуляторов и флагов приведено в табл. 27.2.





  1. А БЛ И Ц А 2 7 .2 . Наиболее используемые манипуляторы пространства имен std для работы с потоками



Манипуляторы вывода


endl


ends

Манипуляторы систем счисления




dec


Hex


oct

Манипуляторы представ­ ления значений с пла­ вающей запятой




Задача

Вставляет символ новой строки


Вставляет нулевой символ


Задача

Вынуждает поток интерпретировать ввод или отображать вывод как десятичное число

Вынуждает поток интерпретировать ввод или отображать вывод как шестнадцатеричное число


Вынуждает поток интерпретировать ввод или отображать вывод как восьмеричное число


Задача


590 ЗАНЯТИЕ 27. Применение потоков для ввода и вывода






Окончание табл. 27.2

Манипуляторы вывода

Задача

fixed

Вынуждает поток отображать значения в форме с ф иксирован­

scientific

ной точкой

Вынуждает поток отображать значения в экспоненциальном




представлении

Манипуляторы

Задача

setprecision

Устанавливает точность десятичного представления как пара­

setw

метр

Устанавливает ширину поля как параметр

setfill

Устанавливает символ заполнения как параметр

setbase

Устанавливает основание системы счисления, используя dec,

setiosflag

hex или oct как параметр

Устанавливает флаги через маску входного параметра типа

resetiosflag

std::ios_base::fmtflags

Восстанавливает исходные значения для специфического типа,




определенного содержимым std: :ios_base: :fmtflags

Использование объекта std: :cout для вывода отформатированных данных на консоль

Объект s t d : : c o u t, используемый для записи в поток стандартного устройства выво­ да, является, вероятно, самым используемым потоком в этой книге и не только. Наконец пришло время вернуться к объекту c o u t и использовать некоторые из манипуляторов для изменения способа выравнивания и отображения данных.




Изменение формата представления чисел

Объект s t d : :c o u t можно заставить отображать целые числа в шестнадцатеричном или восьмеричном формате. Листинг 27.1 демонстрирует использование объекта c o u t для отображения введенных чисел в различных форматах.





  1. И СТИ Н Г 2 7 .1 . Отображение целого числа в десятичном, восьмеричном и шестнадцатеричном форматах с использованием объекта cout и флагов ________

    1. #include




    1. #include




    1. using namespace std;



3:



  1. int main()




  1. {

  2. cout << "Enter an integer:




  1. int Input = 0;




  1. cin » Input;



9:


10: cout « "Integer in octal: " « oct « Input « endl;




Использование объекта stdncout...

591

11

cout « "Integer in hexadecimal: " « hex « Input « endl;




12







  1. cout « "Integer in hex using base notation: ";

  2. cout « setiosflags(ios_base::hex|ios_base::showbase|ios_base \ ::uppercase);




  1. cout « Input « endl;



16



  1. cout « "Integer after resetting I/O flags: ";




  1. cout « resetiosflags(ios_base::hex|ios_base::showbase|ios_base \ :uppercase) ;




  1. cout « Input « endl;

20

  1. return 0;







Результат


Enter an integer: 253


Integer in octal: 375


Integer in hexadecimal: fd


Integer in hex using base notation: OXFD


Integer after resetting I/O flags: 253


Анализ

Пример использует представленные в табл. 27.2 манипуляторы для изменения способа отображения объектом c o u t введенного пользователем целого числа. Обратите внимание на использование манипуляторов o c t и hex в строках 10 и И . В строке 14 функция s e t ­ i o s f l a g s () используется для задания отображения числа прописными буквами в ш ест­ надцатеричном формате. В результате объект c o u t отображает введенное целое число 253 как 0XFD. В результате использования функции r e s e t i o f l a g s () в строке 18 объект c o u t снова отображает целое число в десятичном формате. Вот другой способ смены отображе­ ния целых чисел в десятичном формате:




cout « dec « Input « endl; // отображать в десятичном формате



    1. формате отображения объектом c o u t таких чисел, как P i, можно также задать точ­ ность, т.е. определить количество знаков десятичного числа после запятой, которое бу­ дет представлено, либо задать отображение числа в экспоненциальном представлении (листинг 27.2).




  1. И С ТИ Н Г 2 7 .2 . Использование объекта cout для отображения числа Pi и площади

круга в экспоненциальном представлении и с ф иксированной точкой________________________





  1. #include




  1. tinclude




  1. using namespace std;







4 : int main ()



  1. {




  1. const double Pi = (double)22.0 / 7;

7: cout « "Pi = " « Pi « endl;

  1. :






9: cout « endl « "Setting precision to 7: " « endl;

592 ЗАНЯТИЕ 27. Применение потоков для ввода и вывода



  1. cout « setprecision(7);




  1. cout « "Pi = " « Pi « endl;

    12:

    cout

    «

    fixed « "Fixed Pi = " «

    Pi«

    endl;

    13:

    cout

    «

    scientific « "Scientific

    Pi=

    " « Pi « endl;

  2. '




  1. cout << endl « "Setting precision to 10: " « endl;




  1. cout « setprecision(10);




  1. cout « "Pi = " « Pi « endl;

    18:

    cout

    «

    fixed « "Fixed Pi = " «

    Pi

    «

    endl;

    19:

    cout

    «

    scientific « "Scientific

    Pi

    =

    " << Pi « endl;

    2 0 :



















  2. cout « endl « "Enter a radius: ";



22: double Radius = 0.0;



  1. cin » Radius;




  1. cout « "Area of circle: " « 2*Pi*Radius*Radius « endl;








  1. return 0;




  1. }



Результат


Pi = 3.14286


Setting precision to 7:


Pi = 3.142857


Fixed Pi = 3.1428571


Scientific Pi = 3.1428571e+000


Setting precision to 10:


Pi = 3.1428571429e+000


Fixed Pi = 3.1428571429


Scientific Pi = 3.1428571429e+000


Enter a radius: 9.99


Area of circle: 6.2731491429e+002


Анализ

Вывод демонстрирует, что при увеличении точности до 7 в строке 10 и до 10 в стро­ ке 16 представление значения числа P i изменяется. Обратите также внимание на то, что после применения манипулятора s c i e n t i f i c результат вычисления площади круга ото­ бражается как 6.2731491429е+002.





Download 1,38 Mb.

Do'stlaringiz bilan baham:
1   ...   403   404   405   406   407   408   409   410   ...   437




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish