C++ primer plus 第17 章 输入、使用cout进行输出
C++ primer plus 第17 章 输入、使用cout进行输出
文章目录
17.2 使用cout进行输出
正如前面指出的,C++将输出看作字节流(根据实现和平台的不同,可能是8位、16位或32位的字节,但都是字节),但在程序中,很多数据被组织成比字节更大的单位。例如,int类型由16位或32位的二进制值表示;double值由64位的二进制数据表示。但在将字节流发送给屏幕时,希望每个字节表示一个字符值。也就是说,要在屏幕上显示数字-2.34,需要将5个字符(-、2、.、3和4),而不是这个值的 64位内部浮点表示发送到屏幕上。因此,ostream类最重要的任务之一是将数值类型(如int或foat)转换为以文本形式表示的字符流。也就是说,ostream类将数据内部表示(二进制位模式)转换为由字符字节组成的输出流(以后会有仿生移植物,使得能够直接翻译二进制数据。我们把这种开发作为一个练习,留给您)。为执行这些转换任务,ostrcam类提供了多个类方法。现在就来看看它们,总结本书使用的方法,并介绍能够更精密地控制输出外观的其他方法。
17.2.1 重载的<<运算符
本书常结合使用cout和<<运算符(插入(insertion)运算符):
int clients22;
cout << clients;
在 C++中,与℃一样,<<运算符的默认含义是按位左移运算符(参见附录E)。表达式 x<<3 的意思,将x的二进制表示中所有的位向左移动3位。显然,这与输出的关系不大。但ostream 类重新定义了<<运算符,方法是将其重载为输出。在这种情况下,<<叫作插入运算符,而不是左移运算符(左移运算符由于其外观(像向左流动的信息流)而获得这种新角色)。插入运算符被重载,使之能够识别C++中所有的基本类型:
-
unsigned char:
-
signed char;
-
char:
-
short;
-
unsigned short;
-
int;
-
unsiged int;
-
long;
-
unsigned long;
-
long long(C++11);
-
unsigned long long(C++11);
-
foat:
-
double:
-
long double.
-
对于上述每种数据类型,ostream 类都提供了operator<<()函数的定义(第 11章讨论过,名称中包含运算符的函数用于重载该运算符)。因此,如果使用下面这样一条语句,而value 是前面列出的类型之一,则C++程序将其对应于有相应的特征标的运算符函数:
Cout << value;
例如,表达式 cout<<88对应于下面的方法原型:
ostream & operator<<(int);
该原型表明,operator<<()函数接受一个int 参数,这与上述语句中的 88匹配。该原型还表明,函数返回一个指向 ostream 对象的引用,这使得可以将输出连接起来,如下所示:
cout <"I'm feeling sedimental over " << boundary << "\n";
如果您是C语言程序员,深受%类型说明符过多、说明符类型与值不匹配时将发生问题等痛苦,则使用cout非常简单(当然,由于有cin,C++输入也非常简单)
1.输出和指针
ostream 类还为下面的指针类型定义了插入运算符函数:
const signed char*;
const unsigned char * ;
const char *:
void*
不要忘了,C++用指向字符串存储位置的指针来表示字符串。指针的形式可以是char数组名、显式的char指针

最低0.47元/天 解锁文章
1435

被折叠的 条评论
为什么被折叠?



