请教一下string + bitset 的问题,谢谢大家先
string + bitset 的问题
书上说``从string对象读如位集的顺序是从右向左``
书后也有一道题: string bstr ;
cin >> bstr ;
bitset<8> bv( bstr ) ;
解释bitset对象包含的位模式.
我理解的是: 从 读入的 bstr 的 右边 向 左 数8位,答案应该是: 01100101
然后我写了下面的程序:
#include <iostream>#include <bitset>#include <string>using std :: cout ;using std :: cin ;using std :: endl ;using std :: bitset ;using std :: string ;int main(void){ cout << "\nEnter the bit string :" << endl ; string bstr ; cin >> bstr ; bitset<8> bv(bstr) ; cout << "\nbstr:" << bstr << endl << "bitset<8> bv(bstr): " << bv << endl ; return 0 ;}template<size_t _Nb> template<class _CharT, class _Traits, class _Alloc> void bitset<_Nb>::_M_copy_from_string(const basic_string<_CharT,_Traits,_Alloc>& __s, size_t __pos, size_t __n) { reset(); //下面这句话对输入的字符串进行了"截断"处理,确保不大于要求的比特位数 const size_t __nbits = min(_Nb, min(__n, __s.size() - __pos)); for (size_t __i = 0; __i < __nbits; ++__i) { switch(__s[__pos + __nbits - __i - 1]) { case '0': break; case '1': set(__i); break; default: __throw_invalid_argument("bitset -- string contains characters " "which are neither 0 nor 1"); } } }
[解决办法]
输入的字符串长于bitset的最大长度,结果就是这样,记住就行了。