instream 的 cin 、cin.getline()、cin.get()的区别
2017-11-26 12:11
393 查看
instream 的 cin
cin使用的时候出现的问题
cin 等待用户输入的时候会使用空白(空格、制表符、和换行符)来确认字符串的结束位置。如:输入一个Alan Dreeb,那么遇到空格了,Alan被赋值给第一个变量,Dreeb被赋值给第二个变量。
int main() { char name[20]; char favorite[20]; cout << "enter your name:\n"; cin >> name; cout >> "enter your favorite:\n"; cin >> favorite; cout << "name: "<< name << endl ; cout << "favorite: "<< favorite; } 输出结果: enter your name : Alan Yao enter your favorite : name : Alan favorite: Yao
只给你输入一个name,原因,首先Alan Yao,当cin读取到空格,认为已经结束了,所以在Alan后面添加\0。当程序运行到 cin >> favorite,程序读取到Yao,所有把Yao\0赋值给favorite。
使用cin.getline()
cin.getline()是面向行输入的,它使用的是通过回车键输入的换行符来确认结尾。里面有两个参数,第一个是要处理的变量,第二个是要读取的字符数(记住有一个空字符)。其中它是不保存换行符的,还有旧的库对这个函数支持不太友好。int main() { char name[20]; char favorite[20]; cout << "enter your name:\n"; cin.getline(name,20); cout >> "enter your favorite:\n"; cin.getline(favorite,20); cout << "name: "<< name << endl ; cout << "favorite: "<< favorite; } 输出结果: enter your name : Alan Yao enter your favorite : sport name : Alan Yao favorite: sport
使用cin.get()
为了更加好支持旧版本的c++,还有看出用户输入的是什么,检查错误更加容易一些。使用cin.get()可以更加清晰。它不再读取和丢弃换行符。参数和cin.getline()类似。`cin.getline(name,20)==cin.get(name,20).get()`
相关文章推荐
- C++ 输入函数getline(cin,str) 与cin.getline(str,int)区别
- C++中cin.getline()、getline()、cin.get()区别
- cin.getline,getline,gets 的区别个
- cin.get和cin.getline在读取一整行时的区别
- cin.get()与cin.getline()的区别
- cin.get( )与cin.getline( )的区别
- C/C++学习笔记1 - 深入了解scanf()/getchar(cin、cin.get()、cin.getline()、getline()、gets()、getchar()的区别 (OJ时候会用到)
- cin.get()与cin.getline()的区别
- cin.get( )与cin.getline( )的区别
- cin.get和cin.getline的区别?
- cin>> , cin.getline() 的区别 ,cin.ignore() 缓冲区等知识深入
- cin<<,cin.get(),cin.getline()等区别与联系
- cin.get(),cin,cin.getline()的区别
- VC问题:cin.get和cin.getline的区别?
- cin.get和cin.getline的区别?
- C++中cin,cin.get()和cin.getline()的区别
- cin.get()函数与cin.getline()函数的区别
- cin cin.get cin.getline有什么区别?(转载加部分原创)
- 浅谈cin>>与cin.getline读取缓冲区中的‘\n’和空格的区别
- C++ 读书笔记之 getline与cin.getline的区别