11-C++ 基础-其他C++语句

2.3 其他C++语句

再来看几个C++语句的例子。程序2.3中的程序对前一个程序进行了扩展,要求在程序运行时输入一个值。为了实现这项任务,它使用了cin,这是与cout对应的用于输入的对象。另外,该程序还演示了cout对象的多功能性。

程序2.3  getinfo.cpp

程序调整

如果您发现在以前的程序中需要添加get.cin(),则在这个程序中,需要添加两条cin.get()语句,这样才能在屏幕上看到输出。第一条cin.get()语句在您输入数字并按Enter键时读取输入,而第二条cin.get()语句让程序暂,直到您按Enter

下面是该程序的运行情况:

2.3.1使用cin

上面的输出表面,从键盘输入的值(12)最终被赋给变量carrots。下面是执行这项功能的语句:

cin>>carrots;

从这条语句可知,信息从cin流向carrots。显然,对这一过程有更为正式的描述。就像C++将输出看作是流出程序的字符流一样,它也将输入看作是流入程序的字符流。iostream文件将cin定义为一个表示这种流的对象。输出时,<<运算符将字符串插入到输出流中,输入时,cin使用>>运算符从输入流中抽取字符。通常,需要在运算符右侧提供一个变量,以接收抽取的信息(符号<<>>被选择用来知识信息流的方向)。

cout一样,cin也是一个智能对象。它可以将通过键盘输入的一系列字符(即输入)转换为接收信息的变量能够接受的形式。在这个例子中,程序将carrots声明为一个整型变量,因此输入被转换为计算机用来存储整数的数字形式。

2.3.2 使用cout进行拼接

getinfo.cpp中的另一项新特性是将4条输出语句合并为一条。iostream文件定义了<<运算符,以便可以像下面这样合并(拼接)输出:

cout<<Now you have<<carrots<<carrots.<<endl;

这样能够将字符串输出和整数输出合并为一条语句。得到的输出与下属代码生成的相似:

cout<<Now you have

cout<<carrots;

cout<<carrots.;

cout<<endl;

根据有关cout的建议,也可以按照这样的方式重写拼接版本,即将一条语句放在4行上:

cout<<Now you have

<<carrots

<<carrots.

<<endl;

这是由于C++的自由格式规则将标记间的换行符和空格看作是可以相互替换的。当代码行很长,限制输出的显示风格时,最后一种技术很方便。

需要注意的另一点是:

New you have 14 carrots.

Here are too more.

在同一行中。

这是因为前面指出过的,cout语句的输出紧跟在前一条cout语句的输出后面。即使两条cout语句之前有其他语句,情况也将如此。

2.3.3 类介绍

看了足够多的cincout示例后(我只想睡觉。。。),可以学习有关对象的知识了。具体地说。本节将进一步介绍有关类的知识。正如第一章指出的,类是C++中面向对象编程(OOP)的核心概念之一。

类是用户定义的一种数据类型。要定义类就好比所有著名演员,则对象就好比某个著名的演员。我们来扩展这种类比,表示演员的类中包括该类可执行的操作的定义,如念某一角色的台词,表达悲伤、威胁恐吓,接受奖励等。如果了解其他OOP术语,就知道C++类对于某些语言中的对象类型,而C++对象对应于对象实例或实例变量。

下面更具体一些。前文讲述过下面的变量声明:

int carrots;

上面的代码将创建一个类型为int 的变量(carrots)。也就是说,carrots可以存储整数,可以按特定的方式使用——例如,用于加和减。现在来看cout。它是一个ostream类对象。ostream类定义(iostream 文件的另一个成员)描述了ostream对象表示的数据以及可以对它执行的操作,如将数字或字符串插入到输出流中。同样,cin是一个istream类对象,也是在iostream中定义的。

注意:类描述了一种数据类型的全部属性(包括可使用它执行的操作),对象是根据这些描述创建的实体。

知道类是用户定义的类型,但作为用户,并没有设计ostreamistream类。就像函数可以来自函数库一样,类也可以来自类库。ostreamistream类就属于这种情况。从技术上说,它们没有被内置到C++语言中,而是语言标准指定的类。这些类定义位于iostream文件中,没有被内置到编译器中。如果愿意,程序员甚至可以修改这些类定义,虽然这不是一个好主意(准确的说,这个主意很糟)。iostream系列类和相关的fstream(或文件I/O)系列类是早期所有的实现都自带的唯一两组类定义。然而,ANSI/ISO C++委员会在C++标准中添加了其他一些类库。另外,多数实现都在软件包中提供了其他类定义。事实上,C++当前之所以如此有吸引力,很大程度上是由于存在大量支持UNIXMacintoshWindows编程的类库。

类描述指定了可对类对象执行的所有操作。要对特定对象执行这些允许的操作,需要给该对象发送一条消息。例如,如果希望cout对象显示一个字符串,应向它发送一条消息,告诉它,“对象!显示这些内容!”C++提供了两种发送消息的方式:一种方式是使用类方法(本质上就是稍后将介绍的函数调用);另一种方式是重新定义运算符,cincout采用的就是这种方式。因此,下面的语句使用重新定义的<<运算符将“显示消息”发送给cout:

cout<<I am not a crook.;

在这个例子中,消息带一个参数——要显示的字符串。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值