2015-07-21 53 views
0

如果我有這樣一個bitset:如何從bitset中檢索前幾位?

std::bitset<8> bs = 00000101; 

我怎麼能只檢索從BS位集 「101」?爲了簡單起見,我已經知道我需要前三位了。

隨着@鮑姆的幫助下,我有這樣的事情至今:

std::bitset<8> bs = 00000101; 
int off = 3; // the number of bits I would like 
std::string offStr; // final substring of bitset I wanted 
for (std::size_t i = 0; i < off; ++i) 
{ 
     offStr += bs[i]; 
} 
return offStr; // resulting substring 
+2

http://en.cppreference.com/w/cpp/utility/bitset/operator_at –

+0

你想如何存儲它們? – NathanOliver

+0

你能給我們一個你想要完成的更高層次的圖畫嗎?以這種方式使用位圖很奇怪。 – QuestionC

回答

0

它會工作,如果你

  1. 把正確的價值bitset中(例如,你希望5_10 = 101_2但你做八進制0000101_8 = 65_10)和
  2. 正確地將表示添加到您的字符串中。

嘗試以下操作:

std::bitset<8> bs(5);// = 00000101; 
int off = 3; // the number of bits I would like 
std::string offStr; // final substring of bitset I wanted 
for (std::size_t i = 0; i < off; ++i) 
{ 
     offStr += (bs[i] ? "1" : "0"); 
} 

但是請注意,如果您正在使用std::string::operator+=該位將是在錯誤的順序,所以要麼改變你的循環,或更好的,預先分配的字符串並使用operator[]