猿问

如图是对于第一个程序的运行结果 ,在getline(cin,s)后加getchar()为什么没有用?

#include <iostream>
#include <string>
using namespace std;
void main()
{
string s;
getline(cin,s);
cout<<s<<endl;
}
钱能的C++书中的例子。我在运行的时候,发现输入字符串后,需要连着输入两个回车符才能输出结果,而正常输入字符串不应该是输完字符串后再按一个回车就可以了吗?图片如下
而如果是
#include <iostream>
#include <string>
using namespace std;
void main()
{
char a[40];
cin.getline(a,40);
cout<<a<<endl;
}
则输入输出是正常的。输入字符串后再按一个回车符结束。

此外还想问想正确输入一个字符串,使用string的话,应该怎么写比较好?
谢谢了
图片是对于第一个程序的运行结果
在getline(cin,s)后加getchar()也没用啊,这真是vc6的bug吗?



波斯汪
浏览 170回答 3
3回答

千万里不及你

我用的dev c++ 运行的没错啊,一个回车就行。要不你在getline(cin,s);后加个getchar()清下输入。

倚天杖

VC 没用过,不过 string类直接用 cin>>s 不就可以了吗?为什么还要getline呢,这不是增加开销吗?

三国纷争

我告诉你正解吧。有人说是VC6的BUG,有人说是getline函数在VC6中默认回车为终止符。我偏向于第二种
随时随地看视频慕课网APP
我要回答