C++ 我不读我的输入

C++ 我不读我的输入,c++,cin,C++,Cin,一定是我累了,但我似乎不明白为什么我的程序不会读取init和end的cin值,这应该是我程序的起点和终点。它的输入设置方式是第一行是案例数量,然后会有一个新行,这将是一个字符串,然后在下一行将有两个由空格分隔的整数,所以我觉得我构建它的方式是正确的,但当我调试代码时,无论我是否初始化变量,init和end的值都不会改变 int case_count; string name; int init = 0; int end = 0; cin >> case_count; cin.ig

一定是我累了,但我似乎不明白为什么我的程序不会读取init和end的cin值,这应该是我程序的起点和终点。它的输入设置方式是第一行是案例数量,然后会有一个新行,这将是一个字符串,然后在下一行将有两个由空格分隔的整数,所以我觉得我构建它的方式是正确的,但当我调试代码时,无论我是否初始化变量,init和end的值都不会改变

int case_count;
string name;
int init = 0;
int end = 0;

cin >> case_count; 
cin.ignore(numeric_limits<::streamsize>::max(),'\n');
for (int i = 0; i < case_count; ++i) {
    cout << "Case " << i << "\n";
    getline(cin, name);
    cin.ignore(numeric_limits<::streamsize>::max(), '\n');

    cin >> init;
    cin >> end;
int case\u计数;
字符串名;
int init=0;
int end=0;
cin>>病例数;
cin.ignore(数值限制::max(),'\n');
对于(int i=0;i
示例输入

3 flap 1 3 swoop 0 9 flip 0 6 3. 拍打 1 3 俯冲 0 9 轻弹 0 6
问题是你在循环中调用
ignore
。问题是提取(并丢弃)换行符,这意味着你在循环中调用
ignore
将读取并丢弃下一行(有两个数字的那一行)

此外,当使用输入操作符读取数字或字符串时,操作符将跳过前导空格,因此即使
getline
没有读取换行符,如果没有
ignore
调用,它仍然可以工作


但是,在您读取数字后,输入流中还有一个换行符,下一次迭代时,
std::getline
调用将拾取该换行符,然后
name
将为空,因此您应该按照M.M在注释中的建议,将
ignore
调用移动到循环中的最后一个。

忽略对
ig的调用nore()
.Pun。如果此代码在循环中,
忽略
可以移动到
cin>>结束之后
。否则下一次循环迭代将失败。尽管对所有行使用getline和sstream或其他方法进行分析会更稳健。