gpt4 book ai didi

c++ - 有没有更好的方法来读入多个变量?

转载 作者:行者123 更新时间:2023-11-30 02:46:24 25 4
gpt4 key购买 nike

我有一个有很多字符串变量的类:

struct Person
{
string name, dob, state, best_friend, /* etc... */;
};

而且我必须在我的 istream 运算符中执行此操作:

getline(cin, p.name);
getline(cin, p.dob);
getline(cin, p.state);
getline(cin, p.best_friend);
...

而且我必须对我拥有的所有其他成员变量一遍又一遍地执行此操作。我的问题是有没有更好的方法来做到这一点?

最佳答案

我发现以下辅助函数很有用:

static int delimiter() { static int idx(std::ios_base::xalloc()); return idx; }

template<class... Args>
std::istream& variadic_getline(std::istream& is, Args&&... args)
{
char delim = is.iword(delimiter());
if (!delim)
delim = '\n';

auto l = { 0, (std::getline(is, std::forward<Args>(args), delim), 0)... };
(void)l;
return is;
}

然后做:

if (variadic_getline(std::cin, p.name, p.dob, p.state, p.best_friend)) {

}

关于c++ - 有没有更好的方法来读入多个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23618123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com