请教一个使用 C++ 的 getline 函数时遇到的问题。本人是初学,望高手解答。
晚生想通过下面一个程序录入人的姓名,身高,体重,经试运行发现cin>>输入的字符串不允许有空格,感觉受限制太多,于是根据网上某人的建议改用getline(cin, string),结果发现该变量好像只能写入一次似的,经循环语句再使用时,后面与它无关的cin>>语句都不能让我输入了,运行起来感觉好像只要一遇上cin>>就自动跳过去执行后面的语句一样。我到底错在哪里,求解。#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::endl;
using std::string;
class Human
{
public:
void GetName()
{
cout<<"请输入名字:";
std::getline(std::cin, thename);
}
void GetStature()
{
cout<<"请输入身高(厘米):";
cin>>stature;
}
void GetWeight()
{
cout<<"请输入体重(公斤):";
cin>>weight;
}
void PrintStature(){cout<<"身高为:"<<stature<<"厘米"<<endl;}
void PrintWeight(){cout<<"体重为:"<<weight<<"公斤"<<endl;}
void PrintName(){cout<<"姓名为:"<<thename<<endl;}
private:
string thename;
int stature;
int weight;
};
int main()
{
char GoOn='y';
Human *Xman=new Human;//定义指针对象
while(GoOn=='y')
{
Xman->GetName();
Xman->GetStature();
Xman->GetWeight();
Xman->PrintName();
Xman->PrintStature();
Xman->PrintWeight();
cout<<"是否继续输入?(y/n)";
cin>>GoOn;
if(GoOn=='n'){break;}
}
delete Xman;
return 0;
}