2016-10-21 49 views
0

我不知道如何正確地解釋這一點,但我正在尋找一種方式來自動設置sizebitset<size>number自動可變比特長度的std :: bitset的<size>

cout << bitset<8>(7) << endl; 

具有固定數量的比特的輸出

0000 0111 

我想與可變麻木自動輸出比如輸出11111001而不是使用固定位。

基本上我要削減0的前面,當它不使用

+2

相關:http://stackoverflow.com/questions/14433626/variable-size-bitset – Caramiriel

+1

我同意@Caramiriel,否則你需要手動切斷它們,以類似的方式與[this](http: //stackoverflow.com/questions/24839107/how-to-ignore-remove-leading-zeros)。 – gsamaras

回答

1

這實際上是在一兩個問題。首先是如何調整給定位集的輸出(即刪除前導0's),第二個是如何將輸出減少到給定大小。

由於您只對ostream輸出感興趣,因此使用bitset::to_string()轉換函數以及string::substr的應用程序應該非常合適。

有了這個,你的例子 - 它似乎要保留7位 - 你會得到:

std::cout << std::bitset<8>{}.to_string().substr(1) << std::endl; //removes the first bit 

可以結合起來,與一個方法來尋找第一個設置位,以構建trim函數。