重头在学c++,小白总是会提出一些问题。。。琢磨一段时间,终于有了一套能说服我自己的理由了,cin用法解释如下:
1.提出问题:
在看看c++primer plus 的时候,看到了下面的程序
#include "stdafx.h"
#include<iostream>
const int MAX=5;
int main()
{
using namespace std;
int golf[MAX];
cout<<"please input your golf scores"<<endl;
cout<<"you must enter "<<MAX<<"rounds"<<endl;
int i;
for(i=0;i<MAX;i++)
{
cout<<"round #"<<i+1<<endl;
while(!(cin>>golf[i]))
{
cin.clear();//cin.clear()是什么意思呢?
while(cin.get()!='\n')//
continue;
cout<<"please input a number"<<endl;
}
}
double total=0.0;
for(i=0;i<MAX;i++)
total+=golf[i];
cout<<"thr average ="<<total/MAX<<endl;
return 0;
}
恩,
就是这个cin.clear()没看懂,刚开始理解成清除cin的东西,但是确实不太对。。。所以开始了慢慢探索路程。。。。。
2.预备知识:
cin.get()和cin.getline(),cin.clear(),cin.sync()等的用法.
感谢博主:http://blog.csdn.net/SearchLife/article/details/3491768
2.1 cin.get()
首先看看cin.get(),它是一个读取单个字符的方法.
字符变量=cin.get();相当于cin.get(字符变量);
#include <iostream>
using namespace std;
int main()
{
char cstr;
cstr=cin.get(); //读取单个字符,在屏幕输入,也相当于cin.get(cstr);
cout<<cstr<<endl; //输出刚刚载入的单个字符
system("pause");
}
运行程序后,一切正常:
输入:a 输出:a
但当我们输入的不只一个英文字符时,那又会如何呢?
输入:abcd 输出:a
由此可知,它只能读取第一个字符,但如果我们把程序修改成:
int main()
{
char cstr;
char bstr;
cstr=cin.get(); //读取单个字符,在屏幕输入
bstr=cin.get();
cout<<cstr<<bstr<<endl; //输出刚刚载入的单个字符
system("pause");