主要内容:
- 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
Comments 2 条评论
博主 匿名
一、main函数中无参数的我觉得void可以不加,这样看起来简洁一些。
二、getline中解释输入用回车键结束对吧,那cin输入完数字或者字符后接着使用getline出现了缓冲区的问题,c++中有像c语言一样饭清除函数吗。
三、当我们在使用getline时要把字符串定义成sting,那么就是char型对吗。
博主 vsbf
@匿名 一、确实可以不加void,习惯了。。加void是比较标准的写法
二、用cin的话那个换行符是会保存在缓冲区的,下一次会被cin.getline()读取,所以我觉得用getchar()吃掉就行了,C里面的东西C++都有,那个清除缓存区的函数肯定也是有的
三、string是C++中特有的一种数据类型,用于存放字符串,有点高级,可以去了解一下