| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 881 人关注过本帖
标题: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
快速回复:getline在vc6.0中的一个小问题
数据加载中...
 
   



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

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