-1

ここにコードがあります

#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
4

1 に答える 1

5
cin>>te;

これにより1、入力ストリームから が抽出され、 で停止しますが、 は抽出されません\nignore()そうしないと、次の行抽出で空の行が読み取られます。

cin.ignore();

または、次の文字までのすべての文字を無視するには\n(誰かが入力した場合など1foo)、次のようにします。

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
于 2013-05-04T21:03:31.727 に答える