cin相关函数
一 cin 主要几个函数cin()、cin.get()、cin.getline()、cin.good()、cin.clear、 cin.ignore;
1. cin------------->接受整型,字符,不接受enter space tab 遇到这些对结束符处理,并保 留在缓冲区。(从字符整型开始(而非enter)到E S T接受并保留在缓冲区)
2. cin.get()------->只接受字符char并且接受E S T,不接受整型int,有三种形式
A.cin.get() :---->从 S T开始到E S T结束,不会丢弃E S T
char c1, c2;
cin.get(c1); //若输入 S T 就开始读取数据了,此时缓冲区没有E S T,所以c2 可以正常读取
cin.get(c2);
printf("%d,%d\n",c1,c2); //若输入SEE,输出3210
cout<<c1<<"|"<<c2<<endl; // 打印两个字符,若输入E S T其中一个 cin.get(c1)就开始读取数据了,
总结:和cin()函数类似,不会丢弃EST,不同点是cin.get()从EST开始读取
-
cin.get(ch) : 和无参数的cin.get()函数一样、既ch = cin.get() = cin.get(ch)
-
cin.get(arrar_name ,array_szie) :--->可以接受小于size-1大小的字符串,实质也接受一个一个字符,从S T开始到E结束,自动丢弃E
char a[20];
cin.get(a, 10); //读取9个字符,并且把并且会丢弃enter
cout<<a<<endl; //若输入Tab0123456789输出Tab012345678
return 0;
总结:
A 、cin.get(arrar_name ,array_szie)可以接受空格,到E结束,接受size-1个字符
B 、如果输入size >= array_size(这个size必须小于数组给size)cin.get(arrar_name ,array_szie)该函数会将多出(size-1)的输入字符存放到缓冲区
char ch, a[20];
cin.get(a, 5);
cin>>ch;cout<<a<<endl;
cout<<(int)ch<<endl; //如输入12345,不会执行第二次cin的输入,原因 是cin.get(a,5)输出四个字符,把5保留到冲 区,cin下次读取直接缓冲区的数据故输出12345
Return 0;
3.cin.getline()-------------->cin.getline(参数)该函数有两种形式必须有参数, a.cin.getline(array_name, array_size,'字符(遇到该字符停止读取)')
b.cin.getline(array_name,array_size)类似于cin .get(array_name,array_size)都丢 弃enter
总结:cin.getline():和cin.get()类似,都是从E S T开始读取,到E结束(非上述a情况),都自动丢弃Enter.
4.cin.good()------------>检查cin是否越界(异常),异常返回0,正常返回1
5.cin.clear()------------>清楚异常
-
#include<iostream>
-
using namespace std;
-
int main ()
-
{
-
char ch, str[20];
-
cin.getline(str, 5);
-
cout<<"flag1:"<<cin.good()<<endl; // 查看goodbit状态,即是否有异常
-
cin.clear(); // 清除错误标志
-
cout<<"flag1:"<<cin.good()<<endl; // 清除标志后再查看异常状态
-
cin>>ch;
-
cout<<"str:"<<str<<endl;
-
cout<<"ch :"<<ch<<endl;
-
return 0;
-
}
6.cin.ignore(5,'字符')-------->忽略'字符',循环5次,循环中有'字符'既退出 1. #include <iostream>
2. using namespace std;
3. int main ()
4. {
5. cin.ignore(5, 'a');
6. return 0;
7. }