首页 > 解决方案 > 如何使 std::cin 只读取输入的一部分?

问题描述

我正在制作一个程序,它应该从一行输入中读取一个或两个数字。它看起来像这样:

int N = 0;
cin >> N;
int data[100];

for(int i=0; i<N; i++)
    {
        cin.ignore(5, ' ') >> data[i];
    }

for(int i=0; i<N; i++)
    {
        cout << data[i] << endl;
    }

和输入:

3
1111 22 3 4444 5555
1111 2 3 4444 5555
1111 22 33 4444 5555

第一个输入是程序应该期望的行数。之后,每个输入行看起来像上面的那些。从中,我想提取 2s 或 22s。我已经了解cin.ignore了我可以告诉程序跳过一定数量的字符并指定和结束字符(我认为?)。第 6 个应该是第一个字符,22 或 2 之后的空格应该是它停止的地方。如果我在数组上方输入输入,则会像这样填充:

22
3
4444

我输入后程序已经停止

3
1111 22 3 4444 5555

我是一个非常非常初学者,我很确定我搞砸了一些非常明显的东西,但我不知道是什么。

标签: c++

解决方案


阅读所有内容并丢弃除您需要的所有内容:

// ...

for(int i=0; i<N; i++)
{
    int dummy;
    std::cin >> dummy >> data[i] >> dummy >> dummy >> dummy;
}

// ...

推荐阅读