标准输入流对象 cin
重点api:
cin.get() //一次只能读取一个字符
cin.get(一个参数) //读一个字符
cin.get(三个参数) //可以读字符串
cin.getline()
cin.ignore()
cin.peek()
cin.putback()
标准输入流常见api编程案例
cin接受输入时,>> 会过滤掉不可见字符(例如:空格、回车、TAB等)
也就是说,从第一个非空白符开始读,直到空白符或者文件结束为止
#include <iostream> using namespace std; int main01(void) { char YourName[50]; int myInt; long myLong; double myDouble; float myFloat; unsigned int myUsigned; cout<<"请输入一个int:"; cin>>myInt; cout<<"请输入一个Long"; cin>>myLong; cout<<"请输入一个Double:"; cin>>myDouble; cout<<"请输入你的姓名:"; cin>>YourName; cout<<"\n\n你输入的数是:"<<endl; cout<<"int:\t"<<myInt<<endl; cout<<"Long:\t"<<myLong<<endl; cout<<"double:\t"<<myDouble<<endl; cout<<"char *:\t"<<YourName<<endl; return 0; } int main02(void) { char ch; while((ch=cin.get())!=EOF) //EOF = -1 { cout<<ch; } return 0; } //链式编程:函数的返回值是对象本身,可以当左值使用 int main03(void) { char a,b,c; cin.get(a); cin.get(b); cin.get(c); cout<<a<<b<<c<<endl; //<<重载操作符,其实本质上也是函数 cout.flush(); //刷新缓冲区 cin.get(a).get(b).get(c); cout<<a<<b<<c<<endl; return 0; } int main04(void) { char buf1[256]; char buf2[256]; cout<<"请输入你的字符串 不超过 256"<<endl; cin.getline(buf1,256,'\n'); cout<<buf1<<endl; //cin.getline和cin的区别,能不能带空格 cin>>buf2; //遇到空格停止提取输入流 cout<<buf2<<endl; return 0; } //输入 aa bb cc dd int main05(void) { int intchar; char buf1[256]; char buf2[256]; cin>>buf1; //istream &ignore( streamsize num=1, int delim=EOF ); cin.ignore(2); // int peek(); intchar = cin.peek(); cin.getline(buf2,256); cout<<buf2<<endl; intchar = cin.peek(); cout<<intchar<<endl; return 0; } int main(void) { cout<<"请输入一句话:"<<endl; char c = cin.get(); //输入整数和字符分开处理 if(c>='0' && c<='9') //如果是数字 { int n; cin.putback(c); //往输入流中吐出一个数据 cin>>n; cout<<"输入数字:"<<n<<endl; } else //否则一定是字符 { cin.putback(c); string str; getline(cin,str); cout<<"输入字符串:"<<str<<endl; } return 0; }