字符串不输出数据

string not outputting the data

我通过首先将位放入字符串来反转整数位。 为什么 nu_stringcout 是空字符串。

    uint32_t reverseBits(uint32_t n) {
    string nu_bits;
    for(int i=0; i<32;i++){
        nu_bits.push_back(n>>i)&1);
        cout<<nu_bits<<endl; //prints nothing
    }
    //cout<<stoi(nu_bits); Throwing an exception
    //terminate called after throwing an instance of 'std::invalid_argument'
    //what():  stoi
    return n;
}

push_back 用于向字符串添加字符,如果第一个字符为 0,则字符串以 NUL 结尾,因此将为空。 您可能打算这样做:nu_bits.push_back('0'+((n>>i)&1));

看看ASCII table

-----------------
Dec  |   CHAR VALUE
-----------------
0    |   NULL
1    |   SOH
...

这两个都是不可打印的字符。您可能想添加的字符串是“0”和“1”。分别为48和49

因此,将push_back()更改为以下

    nu_bits.push_back( ((n>>i) & 1) + '0' );
   //OR
    nu_bits.push_back( ((n>>i) & 1) + 48 );