浅谈 C++的 >> 输入流

版权声明:版权声明:本文为博主原创文章,博客地址:http://blog.csdn.net/weixin_41969587,未经博主允许不得转载。 https://blog.csdn.net/weixin_41969587/article/details/82180513

>>是自动读取字符串流内容的符号。
每读完一个符合条件的字符串、整数类型(以空格隔开),之后会自动后移。cin 是指从电脑键盘输入的内容将会以字符串流形式自动导入 cin(即键盘输入内容后,cin 就成为一个“字符串流”了,存储的内容为从键盘输入的内容),而>>则负责读取字符串流的内容,匹配到正确的类型,返回1,否则返回0;用到while将会不断的读取字符串流。
下面直接上代码说明:

 #include<iostream>
     using namespace std;
     int main()
     {
      int s;
      //在键盘输入内容前,cin还没有用到,
      //输完内容之后才把内容以字符串流的形式传给cin流对象
      //cin就变成字符串流,使用提取运算符 ">>" 从设备键盘取得数据,
      //读取类型符合时,就把读取的数据赋值给s;
      cin>>s;
      cout<<endl;
      cout<<s<<endl;
      return 0;
     }

只输入一个数时,cin自动读取内容,读取到空格的地方停止,然后判断读取的内容是否符合类型,这里的s为int类型,符合即把读取的内容赋值给s
只输入一个数

输入多个数据时(用空格隔开),cin自动读取内容,读取到空格的地方停止,然后判断是否符合类型,符合即把读取的内容赋值给s中,所以后面的“3、5、8、456465”没有继续读取了。
输入多个数

假如我想读取多个int数据怎么办?用while不断读取。这里以读取一整行的int数据为例:

 #include<iostream>
 #include<string>
 #include<sstream>
     using namespace std;
     int main()
     {
      int x,i=0;
      string line;
      //从键盘输入多个整数内容(空格隔开)保存到line对象中,此时line不是字符串流
      getline(cin,line);
      //把line对象转化为ss的字符串流
      stringstream ss(line);
      //因为x为int,所以读取ss字符串流时,只有读取到int时,才会返回1,
      //把读取的值赋给x,并且while继续,否则跳出循环
      while(ss>>x)
      {
        cout<<"ss字符串流中第 "<<i++<<" 个数为:";
        cout<<x<<endl;
      }
      return 0;
     }

这里写图片描述

如果读取过程中,读取到不符合类型的部分,将会返回0,跳出循环:
这里写图片描述

以上就是我对>>用法的部分见解,我是C++初学者,如有错误欢迎各位大虾指出。

第一次写原创的博客,有点小激动!希望大家可以相互交流学术知识!!

猜你喜欢

转载自blog.csdn.net/weixin_41969587/article/details/82180513