gpt4 book ai didi

c++ - 使用二进制标志来表示状态、选项等

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:12:14 25 4
gpt4 key购买 nike

如果我想使用二进制“标志”来表示状态或选项或类似的东西,以便我可以传递它们并将它们存储到一个对象中,例如 OPTION1 | OPTION2 其中 OPTION1 是 0001,OPTION2 是 0010,因此传递的是 0011,代表选项的混合。

我如何在 C++ 中执行此操作?我在想类似的事情

enum Option {
Option_1 = 0x01,
Option_2 = 0x02,
Option_3 = 0x04,
//...
}

void doSomething(Option options) {
//...
}

int main() {
doSomething(Option_1|Option_2);
}

但理想情况下,doSomething 知道如何解释给定的选项。

我走在正确的轨道上吗?有没有更好的办法?

更新

难道我不需要为每个可能的组合定义一个 Option 吗?

最佳答案

这是完成这些事情的常见方式。 doSomething 可以使用按位 and 运算符来查看是否选择了一个选项:

if (options & Option_1){ 
// option 1 is selected
}

或者,您可以考虑使用 bit fields :

struct Options {
unsigned char Option_1 : 1;
unsigned char Option_2 : 1;
};

Options o;
o.Option_1 = 1;
o.Option_2 = 0;

关于c++ - 使用二进制标志来表示状态、选项等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1407197/

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