假设我有用户输入这些变量:ID name age
我正在使用while循环来获取用户输入,如下所示
while(cin){
cin >> ID >> name >> age;
do_stuff(ID, name, age);
}
但是如果在某个时刻用户只输入其中一些变量,比如只输入ID和名称,那么while循环应立即结束而不运行do_stuff()。我该怎么办,方法需要快。谢谢!
答案 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)
}
这应该有效,但可能存在更好的解决方案。