如果输入数量未知,则输入输入

时间:2014-02-11 16:28:18

标签: c++

我希望从控制台获取输入数量未知的输入。我所知道的是它们不到或等于10。

我编写了这段代码,但它会两次评估最后一个值。

int x;
    do{
        cin>>x;
        cout<<check(x)<<"\n";
    }while(std::cin);

输入采用以下形式:

12 
2 
45

2 个答案:

答案 0 :(得分:2)

正如@LightnessRacesinOrbit评论的那样,它是while(!eof) bug again。您应该在读取之后检查流状态,而不是之前的

您可以在cin>>x条件中使用while并应用特殊值(即任何不是数字的值)作为结束标记,如下所示:

while (cin >> x)
{
    // got a value
}

答案 1 :(得分:0)

您可以使用istream :: geline。

char input[1024]
std::cin.getline (input,1024);

读完该行后,必须用白色空格作为分隔符将其拆分。只需忽略第11次拆分。你可以在分裂(some_split.c_str())上应用atoi或类似函数来获取数值