C++输入输出流

C++里并没有任何关于输入输出流的定义,而是在标准库 (standard library)中包含了iostream库 (iostream library)iostream库 包含了istreamostream两个基础类型,istream表示输入流ostream表示输出流
(一个stream就是一个字符序列,术语”stream“想要表达的意思是:随着时间推移,字符是顺序生成或消耗的。)
standard library中定义了四个IO对象(object):

  1. cin 标准输入(standard input)istream对象,用于输入。
  2. cout 标准输出(standard output)
  3. cerr 标准错误(standard error)
  4. clog

后三个都为ostream 对象 ,用于输出。

其中cerr 用于输出警告和错误信息,clog 用于输出程序运行时的一般信息。

在程序中,若我们要使用标准库设施,那我们必须先包含相关的头文件header file),所以若我们要用到iostream设施,必须先包含iostream 这个头文件

#include<iostream>

一、先来讲讲输出流

下面是一个表达式:
std::cout << "Enter two numbers:" << std::endl;

首先指出,标准库中定义的多有名字都在命名空间(namespacestd 中, 所以当使用标准库 的设施时,都要在名字前面加std并用作用于运算符::指向std命名空间.

for example:


std::cout
std::cin 
std::cerr 
std::clog 

再来讲讲上面那个表达式,表达式中“<<” 是一个输出运算符,用于在标准输出(standard output)中打印消息。
“<<” 运算符接受两个运算对象,左侧必须是一个ostream对象,右侧的运算对象是要打印的值“<<” 运算符将给定的值写到给定的ostream对象中,运算结果就是写如给定值的这个ostream对象,即运算结果是一个ostream对象,只是这个ostream对象中已经写入了给定的数据。
上面那个表达式也等于:

(std::cout << "Enter two numbers:") << std::endl;
//or
std::cout << "Enter two numbers:";
std::cout << std::endl; 

最后再讲一下表达式中的数据:
1.双引号里的是一个字符串字面值常量*(string literal*),顾名思义,字符串字面值常量的值就是表面看到的字符串
2.第二个被打印的消息是endl (end line),他的名称是操纵符(manipulator),endl 的功能不仅仅是结束当前行,更重要的功能是endl能够刷新缓冲区,即将与设备相关的缓冲去区里的内容冲刷到设备中,这个动作的意义在于可以保证到目前为止,程序所产生的所有输出都真正的写入输出流中,而不是停留在内存中等待输入流。

二、再来讲讲输入流

下面是一个表达式:
int v1 = 0, v2 = 0;
std::cin >> v1 >> v2;

首先是初始化(initialize)了两个int型变量,用来存储数据。
“>>” 是一个输入运算符,与输出运算符相类似,“>>”
接受一个istream作为其左侧运算对象,并接受一个对象作为其右侧运算对象 用于保存从输入流中读取的数据,这里是v1v2。同样的与输出运算对象类似,“>>” 返回其左侧运算对象最为运算结果,即一个数据已被读取了的istream对象
所以上面那个表达式也等价于:

(sdt::cin >> v1) >> v2;
//or
std::cin >> v1;
std::cin >>v2;

三、最后的最后

再来看看一个表达式:
std::cout << "The sum of" << v1 << " and " << v2 << " is "
      << v1 + v2 << std::endl;

上面可以看到一个有意思的地方:
就是运算对象并不都是相同的类型,”The sum of”是字符串字面值常量,而v1,v2则是int型。
这是因为,标准库定义了不同版本的输入输出运算符,用于处理这些不同的数据类型,这也是一种运算符重载

下一篇再来讲讲这些输入输出运算符的聪明之处。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值