0

ユーザーが次の変数を入力したとします: ID 名 年齢

そして、whileループを使用して、以下のようなユーザー入力を取得しています

while(cin){

cin >> ID >> name >> age;

do_stuff(ID, name, age);



}

しかし、ある時点でユーザーがこれらの変数の一部、たとえば ID と名前のみを入力した場合、while ループは do_stuff() を実行せずにすぐに終了する必要があります。どうすればいいですか、メソッドは高速である必要があります。ありがとうございました!

4

2 に答える 2

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;
}
于 2013-03-31T00:32:36.613 に答える
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)
  }

これは機能するはずですが、より良い解決策が存在する可能性があります。

于 2013-03-31T00:27:17.177 に答える