getchar只能“吃”一个字符,而getline可以“吃”一行字符
代码如下:
#include <iostream>
#include <cstring>
using namespace std;int main()
{char c;cin>>c;string line;getline(cin,line);cout<<c<<endl;cout<<line<<endl;return 0;
}
在这里,我输入a,然后按回车,直接就输出结果了。
因为getline把我的回车吃了
#include <iostream>
#include <cstring>
using namespace std;int main()
{char c;cin>>c;string line;getchar();getline(cin,line);cout<<c<<endl;cout<<line<<endl;return 0;
}
在这里,我输入a,然后按回车,还要继续输入,是因为getchar把回车吃了,所以getline才可以接收asd
可是,当我在输入a时,后面再加几个空格,然后再按回车,会发生什么呢?
可以发现,getchar只能吃一个字符,所以当我们输入一个值后,如果后面有几个空格,然后再按回车,getchar就无法解决吃回车的问题了,它把第一个空格吃了,剩下的空格加回车就被getline吃了,所以遇到这种情况,我们再用一次getline来吃就好了!!!
代码如下:
#include <iostream>
#include <cstring>
using namespace std;int main()
{char c;cin>>c;string line;getline(cin,line);getline(cin,line);cout<<c<<endl;cout<<line<<endl;return 0;
}