主要内容:

  • cin的用法
  • cin.getline()的用法
  • getline()的用法
  • 注意的问题

一、cin>>

1.用于从键盘输入一个数字或字符到变量中,例如

#include<iostream>
using namespace std;
int main(void)
{
	int a , b;
	cin >> a >> b;
	cout << a+b << endl;
	return 0;
 } 

输入:2 3
输出:5

2.从键盘输入一个字符串到到字符数组中 遇到空格,tab键和回车键结束

#include<iostream>
using namespace std;
int main(void)
{
	char a[20];
	cin >> a;
	cout << a << endl;
    
	return 0;
 } 

输入:abcdefg hij
输出:abcdefg

二、cin.getline()

可以从键盘输入一个字符串,带空格的也可以读入,不会像cin>>那样中断

#include<iostream>
using namespace std;
int main(void)
{
	char a[20];
	cin.getline(a,5); //第一个参数表示传入的地址,第二个参数表示传进去的长度
  cout << a << endl;
    
	return 0;
 } 

输入:abcdefg
输出:abcd //只输出了4个,说明最后一个是'\0'

拓展:其实cin.getline()有三个参数
cin.getline(接收字符串的变量,接收字符个数,结束字符)
只写两个参数的话系统默认第三个参数是'\0'

三、getline的用法

从流中(可以是标准输入流,也可以是字符串输入流)读取数据放进一个字符串中,可以接受空格并且输出,使用时需要包含#include<string>这个头文件

#include<iostream>
#include<string>
using namespace std;
int main(void)
{
	string a;
	getline(cin,a);
  cout << a << endl;
    
	return 0;
 } 

输入: sdf88sdf bas8 ad
输出: sdf88sdf bas8 ad

四、注意的问题:

1.cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

2.当同时使用cin>>和getline()时,需要注意的是,在cin>>输入流完成之后,getline()之前,需要通过 str="\n"; getline(cin,str); 方式将回车符作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。当然还有一种方法是在他们两个之间调用getchar()函数来吃掉回车符。

参考文章:http://www.cnblogs.com/flatfoosie/archive/2010/12/22/1914055.html


立志成为一名攻城狮