C++57个入门知识点_52 cin&cout的奥秘(文件和流;cin是istream的对象,cout是类ostream的对象;endl本质是函数;<<(左移运算符)是一种运算符重载)

总结:

1.cincout分别为 C++中为了输入输出方便抽象出的两个类的对象

  • cinistream的对象
  • cout是类ostream的对象

2.endl本质是函数,当使用endl时可以看到其起到了 回车换行的作用
3.<<是一种运算符重载,其中重载了字符串、整形、endl函数指针等基础数据类型

1. C++中的文件和流


开篇对文件和流进行一个简单的介绍。

关于C++中流的介绍:C++ 的 I/O 发生在流中,流是字节序列
C++ 基本的输入输出:cin、cout、cerr、clog使用
C++ 文件和流:
C++ 文件和流(入门)
C++ 文件和流(详细)

前面课程中关于输入输出均使用C语言中的scanf()printf()来代替,而一直没有使用cin&cout,本篇将会讲cin&cout的奥秘。

2. cin、cout究竟是什么?


cincout分别为 C++中为了输入输出方便抽象出的两个类的对象

  • cinistream的对象
  • cout是类ostream的对象

作为C++语言的入门一般都是从以下代码开始的

#include <iostream>

using namespace std;//可写可不写,标准库的所有函数都在标准的std命名空间中

int main(int argc,char* argv[])
{
	cout << "hello world!" << endl;

	return 0;
}

刚从C语言过来的我们可能会一脸懵逼,输出不是应该是使用一个函数,此处只是使用一个cout就可以了呢?

  • cout是类ostream的对象

我们肯定会好奇cout/cin/<< 到底扮演着何种角色?将鼠标箭头放到cout上,按F12就会在界面底部出现如图所示
在这里插入图片描述
双击上图底部框选的部分,跳转至对如下图所示内容,cout前为ostream,根据颜色判断,其可能是一个类
在这里插入图片描述
再在ostream上按F12,跳转至using ostream = basic_ostream<char, char_traits<char>>;
在这里插入图片描述
再往上翻,可以看到basic_ostream是一个类
在这里插入图片描述
因此可以看出coutostream的一个对象,因此我们可以知道cout本质不是一个关键字,而是一个对象。

  • 对于cin进行同样操作,可以得到其为istream的对象

因此可以知道cincout分别为 C++中为了输入输出方便抽象出的两个类的对象

3. endl是什么?


endl本质是函数,当使用 endl时可以看到其起到了 回车换行的作用

#include <iostream>

using namespace std;//可写可不写,标准库的所有函数都在标准的std命名空间中

int main(int argc, char* argv[])
{

	cout << "hello world!" << endl<<123;

	return 0;
}

运行结果:
在这里插入图片描述
endl上按F12可以跳转到以下内容,可以看到endl是一个函数名,其中包含了"\n"的回车,.flush()代表刷新
在这里插入图片描述
从上面可以看出本质上endl是一个函数名

4.<<(左移符号)又是什么?


<< 是一种运算符重载,其中重载了字符串、整形、endl函数指针等基础数据类型

利用以下代码往上追溯

#include <iostream>

using namespace std;//可写可不写,标准库的所有函数都在标准的std命名空间中

int main(int argc, char* argv[])
{
	cout<< endl;

	return 0;
}

得到:
在这里插入图片描述
上图中可以看到<<是一种运算符重载,其参数列表中*_Pfn代表函数指针,可以重载一个函数,<<几乎把所有的常见的基础数据类型进行了重载,实现了类型不用特别声明即可使用

这也是为什么不需要指明数据,下面代码均可以实现输出功能

cout<<123;
cout<<"hello";
cout<<123.5f;

5.学习视频地址:cin&cout的奥秘

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月旧城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值