您的位置:首页 > 其它

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()`
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: