Gitlab http go odbc Modernizr bootstrap后台模版 后台界面 jquery关闭当前窗口 cpm怎么计算 js教程文档 maya曲线建模 vue与html5 destoon python创建对象 python免费教程 python编程工具 java课程学习 java集合框架图 linux系统安装 lol体验服转换器 编程语言实现模式 god2iso 苹果x银色 vue引入第三方js 文明6万神殿 cad特性匹配 vscode全局搜索 小度音箱app 跑马灯动态壁纸 贪吃蛇c语言代码 繁简体 dh浩劫天赋 win10工作组 python求平均值 系统重装下载 发条天赋 复印机加粉 jsp页面跳转 ora12154 苹果电脑解压软件
当前位置: 首页 > 学习教程  > 编程语言

C++ 输入与输出流(cin与cout)

2020/8/11 19:56:57 文章标签:

认识C++ 一个完整C++程序应包含哪些要素
IDE – Integrated Developed Environment 集成开发环境
在这里插入图片描述
一个函数定义 包括四部分
返回类型(return type)
函数名( function name)
一个括号包围的形参列表(parameter list,允许为空)
以及函数体(function body)


初识输入输出

C++并未定义任何输入输出(io)语句
C++以包含全面的标准库来提供IO机制
关于iosteam库 包含两个基础类型 istreamostream 分别表示输入流和输出流

什么是流
一个流就是一个字符序列 是从从 IO 设备读出或写入IO设备的 流(stream)想表达的是 随着时间的推移 字符是顺序生成或消耗的

标准输入输出对象
标准库定义了四个IO对象

  1. 处理输入 – 名为cin的istream类型对象 这个对象被称为标准输入
  2. 处理输出 – 名为cout的ostream类型对象 此对象称为标准输出
  3. 处理警告和错误信息 --名为cerr的ostream类型对象 此对象称为标准错误
  4. 处理一般性信息 --名为clog的ostream类型对象

案例一 利用标准输入cin和标准输出cout进行两个整型变量之间的加法运算

#include <iostream>//定义了ostream类  不能加上 .h
//通常情况下 #include必须出现在所有函数之外 一般将此指令放在源文件开始位置

using namespace std;//标准命名空间  标准库定义的所有名字都在命名空间std中

int main()
{
	cout << "请输入两个参数" << endl;//表达式中的<<为输出运算符 在标准输出上打印消息
	//<<输出运算符接收两个运算对象 左侧必须是一个ostream对象 右侧对象为需要打印的值 将给定的值写道给定的ostream对象中
	//输出语句使用两次<<运算符时 第一个运算符的结果就成了第二个运算符的左侧运算对象 就可以将输出请求连接
	//因此 此表达式等价于	(cout << "请输入两个参数" )<< endl;

	//第一个运算符<<给用户打印一个字符串面值常量消息 是用一对双引号包围的字符序列 双引号之间的文本被打印到标准输出

	//第二个运算符<<打印endl 是一个被称为操纵符的特殊值 效果是结束当前行
	int v1 = 0, v2 = 0;

	cin >> v1 >> v2;
	//输入运算符>>接收一个istream输入流作为其左侧运算对象 接受一个对象作为右侧运算对象
	//从给定的istream读入数据 并存入给定对象中 返回其左侧运算对象作为计算结果 
	//因此 此表达式等价于	(cin >> v1 )>> v2;
    
	cout << "参数" << v1 << "和参数" << v2 << "的和为" << v1 + v2 << endl;
	return 0;
}

在这里插入图片描述

iostream 头文件
该文件定义了 cin、cout、cerr 和 clog 对象,分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流
在这里插入图片描述

标准输出流(cout)

<< 输出运算符(流插入运算符) 在标准输出上打印消息
1.<<输出运算符接收两个运算对象 左侧必须是一个ostream对象 右侧对象为需要打印的值 将给定的值写到给定的ostream对象中
2.输出语句使用两次<<运算符时 第一个运算符的结果就成了第二个运算符的左侧运算对象 就可以将输出请求连接

endl 是一个被称为操纵符的特殊值 效果是结束当前行

标准输入流(cin)

预定义的对象 cin 是 iostream 类的一个实例。cin 对象附属到标准输入设备,通常是键盘 cin 是与流提取运算符 >> 结合使用的

>>输入运算符 接收一个istream输入流作为其左侧运算对象 接受一个对象作为右侧运算对象
从给定的istream读入数据 并存入给定对象中 返回其左侧运算对象作为计算结果

如果要求输入多个数据,可以使用如下语句

cin >> one>> two;

这相当于下面两个语句

cin >> name;
cin >> age;

标准错误流(cerr)

预定义的对象 cerr 是 iostream 类的一个实例。cerr 对象附属到标准错误设备,通常也是显示屏,但是 cerr 对象是非缓冲的,且每个流插入到 cerr 都会立即输出

cerr 也是与流插入运算符 << 结合使用的

标准日志流(clog)

预定义的对象 clog 是 iostream 类的一个实例。clog 对象附属到标准错误设备,通常也是显示屏,但是 clog 对象是缓冲的 这意味着每个流插入到 clog 都会先存储在缓冲区,直到缓冲填满或者缓冲区刷新时才会输出

我们暂时无法区分 cout、cerr 和 clog 的差异,但在编写和执行大型程序时,它们之间的差异就变得非常明显。所以良好的编程实践告诉我们,使用 cerr 流来显示错误消息,而其他的日志消息则使用 clog 流来输出

案例二 读取数量不定的输入数据

在这里插入图片描述
在这里插入图片描述
:使用cin输入数据时 windows系统下默认 输入结束条件为:遇到Enter、Space、Tab键
在从键盘向程序输入数据时 对于如何指出文件结束 window系统中 输入文件结束符的方法是键入 Ctrl+Z 然后按下回车键

C++标准输入流(cin)中的方法

在这里插入图片描述

cin.ignore() 与 cin.getline

cin.ignore()函数中有两个参数,分别为数值型的a字符型的 ch ,即cin.ignore( a, ch )
cin.getline()函数中有三个参数 分别为 数组名 长度 结束符 大体与 cin.get(数组名,长度,结束符)类似。(实际能读取长度(-1)个字符,因为字符串结尾是0

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

由此可见
cin.ignore():第一个参数 规定了从流中忽略的数据的个数 在此数目之前的参数(包括回车)都将从流中清除出去
cin.getline(): 第一个参数 指定数组名 第二个参数为失效位 大于此失效位的输入被阻断(此函数会一次读取多个字符(包括空白字符)也就是说 如果cin.getline未设置失效位 将返回 带有空白字符的参数 而cin是空白字符为结束输入符的 所以cin.getline的另一功能为 显示带有空白字符的参数)


cin.peek()cin.get()

cin.peek() 返回缓冲区中的下一个字符,但只是查看,并不从缓冲区中取出

cin.get三个参数 分别是 数组名 长度 结束符
其中结束符为可选参数,读入的字符个数最多为长度减1个,结束符规定结束字符串读取的字符,默认为ENTER
在这里插入图片描述
在这里插入图片描述
程序遇到字符A停止,A仍停留在输入流中。可见,使用peek的效果相当于先用get()读取一个字符,再用putback()将字符放入输入流中

cin.get() 不会丢失任何空白符号

cin.get()当输入的字符串超长时,不会引起cin函数的错误,后面的cin操作会继续执行,只是直接从缓冲区中取数据。但是cin.getline()当输入超长时,会引起cin函数的错误,后面的cin操作将不再执行


cin.gcount() 和 **cin.read()**和
cin.gcount() 输出 输入流缓存区cin中的单位数据的数目
**cin.read 两个参数 数组名 长度 **从字符串流中读取n个字符到c数组中
**cout.write 两个参数 数组名 长度 **输出n个字符到字符串输出流中
在这里插入图片描述
在这里插入图片描述

注意

1.使用cin,从流中读出的字符,流中就没有这字符了,再次读取时只能读取流中剩下的
2.缓冲区只有在遇到EOF、手动敲回车、流(缓存区)满时,才将流中的字符全部读出(即清空缓存区)
注:EOF是一个计算机术语,为End Of File的缩写,在操作系统中表示资料源无更多的资料可读取
通常在文本的最后存在此字符表示资料结束


本文链接: http://www.dtmao.cc/news_show_100264.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?