例如:cin>>value_holder
istream&operator>>(int&);//注意函数原型,参数和返回值都是引用
istream&operator>>(char&);
signedchar*;
char*;
unsignedchar*;
Cin的常见用法:
用法1:最基本,也是最常用的用法,输入一个数字:
#include <iostream> using namespace std; int main () { int a,b; cin>>a>>b; cout<<a+b<<endl; return 0;}
#include <iostream> using namespace std; int main () { char a[20]; cin>>a; cout<<a<<endl;return 0}
Cin有一个比较“智能”之处,即它会读取从非空白字符开始,到与目标类型不匹配的第一个字符之间的全部内容。
例如,对于下面的代码:
Intvalue;
Cin>>-123a;
怎样实现循环输入?
先看这样一段代码:
int sum =0;int input;While(cin >> input){Sum += input;}
这段代码实现了循环输入,循环体中当然可以用别的数据结构比如容器来接收输入,这不是一个死循环吗?当然,如果一直输入的是正确的int型数据,输入将一直进行下去,,直到地老天荒!结束这个循环的方法很简单,输入一个错误字符即可。
怎样恢复流状态?
Cin.clear();//重置流状态
Cin.sync();//清空流缓存
这两个函数要同时使用才算完成重置流状态。
以下代码说明sync()函数的功能:
#include <iostream>using namespace std;int main () { char first, second; cout << "Please, enter a word: "; first=cin.get(); cin.sync(); cout << "Please, enter another word: "; second=cin.get(); cout << "The first word began by " << first << endl; cout << "The second word began by " << second << endl; return 0;}怎样得到整行数据?
如果想得到整行数据,cin有诸多限制。这时可以借用非格式化输入函数。
istream&getline(char*,int,char);
istream&getline(char*,int);
istream&getline(istream&,string)
例如:
int main(){string line;while (getline(cin, line)) cout << line << endl;return 0;}
人生不如意十之八-九,与其诅咒黑暗,倒不如在生命中点燃一盏灯