一、简述
cin.get() 和 cin.getline() 解决 char 中的问题,遇到换行符时才停止。
对于 string 类,不能使用cin.get()和cin.getline()进行输入,会报错,但用 cin 输入又无法输入带空格的字符串。
二、题目
/*
修改以下程序,使用C++ string 类而不是 char 数组
#include<iostream>
using namespace std;
int main()
{
const int ArSize = 20;
char name[ArSize];
char dessert[ArSize];
cout << "Enter your name: ";
cin.getline(name, ArSize);
cout << "Enter your favorite dessert: ";
cin.getline(dessert, ArSize);
cout << "I have some delicious " << dessert << " for you, " << name << ".\n";
return 0;
}
*/
三、代码
1.不符合题目要求的示例
#include<iostream>
#include<string>
using namespace std;
int main()
{
string name, dessert;
cout << "Enter your name: ";
cin >> name; //不能输入空格
cout << "Enter your favorite dessert: ";
cin >> dessert;
cout << "I have some delicious " << dessert << " for you, " << name << ".\n";
return 0;
}
问题:怎样才能顺利输入?
2.正确示例
#include<iostream>
#include<string> //使用 string 类
using namespace std; //名字空间声明
int main()
{
// string 能够自动维护字符串的长度,所以不需要长度常量
string name;
string dessert;
cout << "Enter your name: ";
getline(cin, name); //使用 getline() 函数而不是 cin 的对象 getline() 函数
cout << "Enter your favorite dessert: ";
getline(cin,dessert);
cout << "I have some delicious " << dessert << " for you, " << name << ".\n";
return 0;
}
解决:使用 getline() 函数而不是 cin 对象的 getline() 函数(两者参数有区别),且不用担心字符长度问题。
格式为 getline(cin,string_name);
四、总结
对于 string 类,可以使用函数 getlinge() 进行输入。
如果和我一样,对 cin
,cin.get()
,cin.getline()
,getline()
感到迷糊,可以阅读下面这篇文章:
cin(),cin.get(),cin.getline(),getline()的区别(直接看总结)