浅谈 C++的 >> 输入流
程序员文章站
2024-03-07 09:41:56
...
>>是自动读取字符串流内容的符号。
每读完一个符合条件的字符串、整数类型(以空格隔开),之后会自动后移。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++初学者,如有错误欢迎各位大虾指出。
第一次写原创的博客,有点小激动!希望大家可以相互交流学术知识!!