无法读取第一个字符串

Can't read first string

本文关键字:字符串 第一个 读取      更新时间:2023-10-16

代码

#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
cin>>te;

这将从输入流中提取1,然后停在但不提取n。您需要ignore()该字符,否则下一行提取您所做的将只是读取空行。

cin.ignore();

或者忽略所有字符,直到并包括下一个n字符(以防有人输入1foo或其他东西),您可以这样做:

cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');