cin学习--------cin.get()和cin.getline(),cin.clear(),cin.sync()等的用法.

重头在学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"); 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值