这是代码
#include<iostream>
#include<cstring>
#define limit 25
using namespace std;
int main()
{
int te; //Number of test cases
cin>>te;
while(te)
{
char m[limit];
char w[limit];
cin.getline(m,limit); // This line is not getting executed for some reason
cin.getline(w,limit);
cout<<"m "<<m<<" "<<endl<<"w "<<w<<endl;
te--;
}
}
因为上帝知道是什么原因,机器拒绝为第一个测试用例读取m。在其他情况下,它会读取并打印m和w的值,但对于第一种情况,它拒绝读取m。
样品:
INPUT
1
hello
m is
w is hello
2
hello
m
w hello
stack
overflow
m stack
w overflow
答案 0 :(得分:5)
cin>>te;
这将从输入流中提取1
,然后停止但不提取\n
。您需要ignore()
该字符,否则您执行的下一行提取只会读取一个空行。
cin.ignore();
或者忽略所有字符,包括下一个\n
字符(如果有人输入1foo
或其他内容),您可以执行以下操作:
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');