c++中的getline函数的问题

Legend258 2008-11-12 09:30:00
#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
int main (){
string name1;
string name2;
cout<<"Enter your first name: "<<endl;
getline(cin,name1,'\n');
cout<<"Enter your last name: ";
getline(cin,name2,'\n');
cout<<"Here's the information in a single string: "<<name2<<", "<<name1<<endl;
return 0;
}

运行的结果是
Enter your first name:
123
456
Enter your last name:
789
Here's the information in a single string: 456, 123
Press any key to continue

怎么会是这样子的呢?
在第一个getline 后怎么会要输入两行呢?,而name2又变成了456,
...全文
225 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Legend258 2008-11-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 krocwang 的回复:]
不知道为啥不用cin。
不过我在vc9.0下,没有问题啊。
[/Quote]
现在就是要看getline这个函数
用cin谁不会啊
Legend258 2008-11-15
  • 打赏
  • 举报
回复
不是这个问题,你这样写谁不知道啊,现在就是要看用getline怎么写的
krocwang 2008-11-12
  • 打赏
  • 举报
回复
不知道为啥不用cin。
不过我在vc9.0下,没有问题啊。
Donald_Duck 2008-11-12
  • 打赏
  • 举报
回复
你用的是什么编译器?是VC6.0吗,在VC6.0下会出这个bug,VC6.0对标准支持得也不好,我建议你用VC2005,我用VC++2005试了一下,没出问题
feng4206yu 2008-11-12
  • 打赏
  • 举报
回复

string name1;
string name2;
cout<<"Enter your first name:";
getline(cin,name1,'\n');
cin.ignore(1,'\n');
cout<<"Enter your last name:\n";
getline(cin,name2,'\n');
cout<<"Here is:"<<name2<<"******"<<name1<<endl;

这个试一下,楼主...
sunhuanwen 2008-11-12
  • 打赏
  • 举报
回复
getline(cin,name1,'\n');


你这样分隔是有问题的,cin认为的结束就是'\n',而你给出的分隔符也是'\n'因此,第一个回车就作为了分隔符
这显然与你的想法不符
你完全可以这样写
cin>>name1;
这样你看怎么样?
Legend258 2008-11-12
  • 打赏
  • 举报
回复
sp6?
补丁?
这是6.0里面的bug ?
taodm 2008-11-12
  • 打赏
  • 举报
回复
VC6没打sp6吧?

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧