2014-03-26 58 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')^ ...

打開你的心;)