字符串不输出数据
string not outputting the data
我通过首先将位放入字符串来反转整数位。
为什么 nu_string
的 cout
是空字符串。
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 );
我通过首先将位放入字符串来反转整数位。
为什么 nu_string
的 cout
是空字符串。
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 );