gpt4 book ai didi

c++ - 重载输入 (>>) 运算符以获取枚举字符串

转载 作者:行者123 更新时间:2023-11-27 23:36:15 25 4
gpt4 key购买 nike

enum shuffle_mode {IN, OUT};
istream& operator>> (istream& in, shuffle_mode& shuffle) {
int a;
in >> a;
if (a==1) {shuffle=IN;}
if (a==2) {shuffle=OUT;}
}

我想修改这个运算符重载,以便它能够直接将 IN 或 OUT 作为输入,而不是枚举中的相应数字。

在一个完美的场景中,它看起来像这样:

istream& operator>> (istream& in, shuffle_mode shuffle) {
in >> shuffle;
}

最佳答案

你说

In a perfect scenario it would look something like this:

istream& operator>> (istream& in, shuffle_mode shuffle) {
in >> shuffle;
}

那就麻烦了。这将导致无限递归和堆栈溢出。

您可以使用:

istream& operator>> (istream& in, shuffle_mode& shuffle) {
std::string token;
in >> token;
if ( token == "IN" || token == "1" ){shuffle=IN;}
else if ( token == "OUT" || token == "2" ){shuffle=OUT;}
else { /* Error */ }

return in;
}

关于c++ - 重载输入 (>>) 运算符以获取枚举字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59002042/

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