我使用MinGW在windows上运行g++编译器。每当我运行下面的代码时,编译器都会给出奇怪的结果。
代码:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int n;
string a;
cin>>n;
getline(cin,a);
cout<<a;
return 0;
}编译代码时没有出现任何问题。但只要我运行代码并输入n,它就不会要求输入a并结束。我使用的是MinGW 5.1.6,有什么问题吗?还是我的代码有问题?
发布于 2010-08-26 02:23:15
问题出在您的代码中。简而言之,您为提交n编号而键入的换行符仍然存储在输入缓冲区中,因为它不是数字输入,因此不会被n使用。然后,getline函数吸收换行符并完成。
发布于 2010-08-26 02:23:10
cin>>n读取数字,但将新行保留在缓冲区中。当您调用getline时,它会将换行符作为空行读取,打印出来,然后从main返回。无论如何,在调用getline之前,您需要将该行的其余部分从输入缓冲区中取出。
https://stackoverflow.com/questions/3569005
复制相似问题