Бьерн Страуструп. Язык программирования С++ Второе дополненное издание



Pdf көрінісі
бет186/256
Дата11.07.2022
өлшемі2,87 Mb.
#37591
1   ...   182   183   184   185   186   187   188   189   ...   256
10.2.1 Вывод встроенных типов 
Для управления выводом встроенных типов определяется класс ostream с операцией << (вывести): 
class ostream : public virtual ios { 
// 
... 
public: 
ostream& operator<<(const char*); //
строки 
ostream& 
operator<<(char); 
ostream& 
operator<<(short 
i) 
{ return *this << int(i); } 
ostream& 
operator<<(int); 
ostream& 
operator<<(long); 
ostream& 
operator<<(double); 
ostream& operator<<(const void*); // 
указатели 
// 
... 
}; 
Естественно, в классе ostream должен быть набор функций operator<<() для работы с беззнаковыми 
типами. 
Функция operator<< возвращает ссылку на класс ostream, из которого она вызывалась, чтобы к ней 
можно было применить еще раз operator<<. Так, если х типа int, то 
cerr << "x = " << x; 
понимается как 
(cerr.operator<<("x = ")).operator<<(x); 
В частности, это означает, что если несколько объектов выводятся с помощью одного оператора 
вывода, то они будут выдаваться в естественном порядке: слева - направо. 
Функция ostream::operator<<(int) выводит целые значения, а функция ostream::operator<<(char) - 
символьные. Поэтому функция 
void val(char c) 

cout << "int('"<< c <<"') = " << int(c) << '\n'; 

печатает целые значения символов и с помощью программы 
main() 

val('A'); 
val('Z'); 

будет напечатано 
int('A') = 65 
int('Z') = 90 


Бьерн Страуструп.
Язык программирования С++ 
 
260 
Здесь предполагается кодировка символов ASCII, на вашей машине может быть иной результат. 
Обратите внимание, что символьная константа имеет тип char, поэтому cout<<'Z' напечатает букву Z, а 
вовсе не целое 90. 
Функция ostream::operator<<(const void*) напечатает значение указателя в такой записи, которая более 
подходит для используемой системы адресации. Программа 
main() 

int i = 0; 
int* p = new int(1); 
cout << "local " << &i 
<< ", free store " << p << '\n'; 

выдаст на машине, используемой автором, 
local 0x7fffead0, free store 0x500c 
Для других систем адресации могут быть иные соглашения об изображении значений указателей. 
Обсуждение базового класса ios отложим до 10.4.1. 


Достарыңызбен бөлісу:
1   ...   182   183   184   185   186   187   188   189   ...   256




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет