考虑一个例子,你有朋友A B和C,他们去旅行,每个人花费他们的金额,最后你需要在他们之间平均分配金额 输入格式: A,B,C 100饮料 B 200零食 300 TICKETS
问题是如何读取第一行A,B,C,然后读取其余行
答案 0 :(得分:2)
您创建一个类来保存信息:
struct MyClass
{
enum friend_t {
A, B, C
} friend;
std::map<friend_t, unsigned int> drink_count;
std::map<friend_t, unsigned int> snack_count;
std::map<friend_t, unsigned int> ticket_count;
};
然后定义一个可以单独使用的运算符来提取此信息:
std::istream& operator>>(std::istream& is, MyClass& obj)
{
// Here put a collection of `is >> ...` operations to do what you need
}
现在,从调用范围开始,操作被封装,例如:
int main()
{
MyClass obj;
while (std::cin >> obj) {}
}
我会留给你找出operator>>
函数的实际内容。这计算为输入解析到一定程度,但您的输入数据看起来很简单,可以使用简单循环和>>
上的is
次调用。