如何检查用户输入的物品是否足够?

时间:2013-03-31 00:14:01

标签: c++ input cin

假设我有用户输入这些变量:ID name age

我正在使用while循环来获取用户输入,如下所示

while(cin){

cin >> ID >> name >> age;

do_stuff(ID, name, age);



}

但是如果在某个时刻用户只输入其中一些变量,比如只输入ID和名称,那么while循环应立即结束而不运行do_stuff()。我该怎么办,方法需要快。谢谢!

2 个答案:

答案 0 :(得分:1)

#include <iostream>
#include <string>
int main() {
        int ID, age;
        std::string name;
        while(std::cin.good()){
                if (std::cin >> ID && std::cin >> name && std::cin >> age) {
                        std::cout << ID << name << age << std::endl;
                }

        }
        return 0;
}

答案 1 :(得分:0)

您可以使用stringstream和getline实现此目的,如下所示:

  #include <sstream>
  #include <string>

  int age = -1; //assume you init age  as -1 and age is integer type
  stringstream ss;
  while (getline(cin,line))
  {
     age = -1;
     ss.clear();
     ss << line;
     ss >> ID >> name >>age;

    if (age ==-1)  //if no age is parsed from input line, break the while loop
    {
       cout << "no age is contained in input line" <<endl;
       break;
    }
    do_stuff(ID,name, age)
  }

这应该有效,但可能存在更好的解决方案。