C++ 之cin与cout常见问题详解

例如: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;}

人生不如意十之八-九,与其诅咒黑暗,倒不如在生命中点燃一盏灯

C++ 之cin与cout常见问题详解

相关文章:

你感兴趣的文章:

标签云: