2014-03-26 31 views
0

我想在用户给出的二进制输入中使用C++进行二进制操作,即XOR。用户只能输入一个零和一个序列。我如何声明一个变量来接受输入1和0作为二进制位?如何接受来自C++用户的二进制输入?

+0

将它们作为字符串? – taocp

+0

以字符串形式读取,然后验证输入。 –

+0

我实际上是C++和编程的初学者。我如何验证输入?为了什么目的? –

回答

3

的简便方法是使用std::bitset。如果您查看其constructors,可以从多个数据源构建一个位集,包括std::string和C风格的字符串。构造函数在输入无效的情况下验证输入并抛出异常。您可以直接使用其bitwise operators。 XOR是operator^

std::bitset是一个固定大小的容器,因此您必须将最大预期长度指定为constexpr值。

+0

我不确定bitset是否允许我让用户指定输入序列的长度?! –

+0

是否将constexpr启用可变大小的序列?我想要的程序要求用户在输入序列本身之前输入序列的长度。 –

+0

@MohamedAhmed正如我所说的,大小是固定的,即在编译时已知。这可能只是最大值,例如256位。用户只需输入不应超过该长度的字符串表示。 – iavr

0

将序列作为字符串获取,然后使用strtol和base 2 |或创建自己的函数将字符串转换为整数(这并不难)|或直接使用字符串(字符串[我] - '0')^ ...

打开你的心;)