今天,我们继续针对以下连个代码进行讲解:
想看第一章请点击以下网址:
https://blog.csdn.net/ljn081117/article/details/120584999
#include<iostream>
using namespace std;
int main()
{
cout<<"Hello,c++";
return 0;
}
#include<stdio.h>
uisng namespace std;
int main()
{
printf("Hello,c++");
return 0;
}
可以看出,两个代码除了头文件不一样外,还有一个点也不一样,那就是主代码里的cout和printf,我们就先讲cout吧。
提到cout,我就不得不提一下他的“兄弟”——cin。
<iostream> 是 Input Output Stream 的缩写,是标准的输入、输出流库。定义了标准的输入、输出对象。including <iostream> 还会自动包含<ios>,<streambuf>,<istream>,<ostream>和<iosfwd>。
Note: iostream 类主要声明在头文件 <istream>中。
输入流: std::cin 是 istream 类的对象,它主要面向窄字符(narrow characters (of type char))的标准输入流。
输出流: std::cout 是 ostream 类的对象,它主要面向窄字符的标准输出流。
在理解 cin 功能时,不得不提标准输入缓冲区。当我们从键盘输入数据的时候,需要敲一下回车键才能够将这个数据 送入到缓冲区 中,那么敲入的这个回车键(\r)会被转换为一个换行符’\n’,这个换行符也会被存储在 cin 的缓冲区中并且被当成一个字符来计算!
比如我们在键盘上敲下了 123456 这个字符串,然后敲一下回车键(\r)将这个字符串送入了缓冲区中,那么此时缓冲区中的字节个数是 7 ,而不是 6。
cin 读取数据也是从缓冲区中获取数据,缓冲区为空时,cin 的成员函数会阻塞等待数据的到来,一旦缓冲区中有数据,就触发 cin 的成员函数去读取数据。
I. std::cin 可以连续从键盘读取想要的数据,并忽略空格、tab 或 换行符。
II. 可通过函数 cin.fail() 判断 cin 是否成功从缓冲区读取数据,若刚进行的操作失败,则返回真,否则返回假。
III. 可通过函数 cin.eof() 判断 是否检测到文件尾,linux可通过Ctrl+D(window可用Ctrl+Z)模拟文件尾,当检测到 EOF后,cin.eof( )返回true。cout跟其也是一样的运行方式。
cout可以说是一种输出东西的方式,当然,还有更多的输出,后续会说。
从下周起,我还会时不时更新题解之类难度偏高文章,希望大家给我点一个关注,谢谢。