标题:请教一个使用 C++ 的 getline 函数时遇到的问题。本人是初学,望高手解答。
取消只看楼主
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
结帖率:100%
已结贴  问题点数:20 回复次数:6 
请教一个使用 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;
}
搜索更多相关主题的帖子: include public 字符串 网上 
2014-05-19 17:38
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
那我试试其他输入函数再看看。
对了,请问楼上:清除缓冲该是什么语句来着?我是初学者没用过。谢谢
2014-05-19 18:36
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
回复 2 楼 砖家的谎言
请问这两种具体要怎么弄呢?
2014-05-19 18:42
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
回复 5 楼 funyh250
谢谢,我再试试看。
2014-05-19 18:42
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
回复 5 楼 funyh250
清除缓冲之后不再出现永久循环了,但仍然把代码中的cin>>忽略了过去,并且不按下"n"也退出了循环,不知怎么回事。郁闷。不过还是多谢你的解答。
2014-05-19 18:47
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
回复 9 楼 yxq211046
问题解决了,就是像你说的那样加一句cin.sync().
想知道这一句到底做了什么事?有这么大能耐。还望兄台不吝赐教。
2014-05-19 20:31
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
回复 9 楼 yxq211046
谢谢
2014-05-19 20:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-431782-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052739 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved