标题:getline在vc6.0中的一个小问题
只看楼主
yxb0001
Rank: 2
等 级:论坛游民
帖 子:50
专家分:35
注 册:2009-9-9
结帖率:100%
已结贴  问题点数:20 回复次数:6 
getline在vc6.0中的一个小问题
下面小程序中为什么在vc++6.0中运行结果却得不到所需的结果?

#include <iostream>
#include <string>
using namespace std;

int main ()
{
  string mystr;
  cout << "What's your name? ";
  getline (cin, mystr);
  cout << "Hello " << mystr << ".\n";
  cout << "What is your favorite color? ";
  getline (cin, mystr);
  cout << "I like " << mystr << " too!\n";
  return 0;
}


在VC++6.0运行,其结果如下:(下面黑粗体字是键盘输入的)
What's your name? Aqua  
Hello Aqua.
What is your favorite color? blue
I like too!


为什么在所需结果"I like blue too!"中会缺少"blue"?
搜索更多相关主题的帖子: getline 
2009-09-09 12:28
最左边那个
Rank: 4
等 级:业余侠客
威 望:3
帖 子:97
专家分:201
注 册:2009-4-24
得分:0 
因为你下面这里:
 cout << "What's your name? ";
  getline (cin, mystr);

你输入名字以后,点回车,它还要你继续输入内容,这时候你继续输入的内容,就会被
 cout << "What is your favorite color? ";
  getline (cin, mystr);

这里的mystr读取

所以其实你
cout << "What is your favorite color? ";  
  getline (cin, mystr);
这里输入的内容,是第3行,是没有被读取的


2009-09-09 12:50
最左边那个
Rank: 4
等 级:业余侠客
威 望:3
帖 子:97
专家分:201
注 册:2009-4-24
得分:0 
因为你下面这里:
 cout << "What's your name? ";
  getline (cin, mystr);

你输入名字以后,点回车,它还要你继续输入内容,这时候你继续输入的内容,就会被
 cout << "What is your favorite color? ";
  getline (cin, mystr);

这里的mystr读取

所以其实你
cout << "What is your favorite color? ";  
  getline (cin, mystr);
这里输入的内容,是第3行,是没有被读取的


2009-09-09 12:51
最左边那个
Rank: 4
等 级:业余侠客
威 望:3
帖 子:97
专家分:201
注 册:2009-4-24
得分:10 
  cout << "What's your name? ";
  getline (cin, mystr);

这里会要求你写入2行,第一行被name读取,第二行被color读取
所以  
cout << "What is your favorite color? ";
 getline (cin, mystr);

这里输入的其实是第3行,没有被读取
2009-09-09 12:53
xufen340
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:166
专家分:1351
注 册:2009-8-7
得分:10 
准确说这是vc的一个漏洞,http://support.,改正方法上面也提到了,这个文件Microsoft Visual Studio\VC98\Include\STRING中。
2009-09-09 14:24
yxb0001
Rank: 2
等 级:论坛游民
帖 子:50
专家分:35
注 册:2009-9-9
得分:0 
谢谢。

第5楼从根本上解决了此问题。第4楼说明了在此小"bug"下如何操作才能得到结果。都是高手。
2009-09-09 22:30
yxb0001
Rank: 2
等 级:论坛游民
帖 子:50
专家分:35
注 册:2009-9-9
得分:0 
一般可采用cin.getline语句解决,如下:

#include<iostream.h>
 
int main()
{
    char mystr[100];
    cout<<"what's your name? ";
    cin.getline(mystr,100);
    cout<<"Hello "<<mystr<<".\n";
    cout<<"what is your favorite color? ";
    cin.getline(mystr,100);
    cout<<"I like "<<mystr<<" too!\n";
    return 0;
}
2009-09-10 16:46



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




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

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