我有字节到二进制字符串函数,
std::string byte_to_binary(unsigned char byte)
{
int x = 128;
std::ostringstream oss;
oss << ((byte & 255) != 0);
for (int i = 0; i < 7; i++, x/=2)
oss << ((byte & x) != 0);
return oss.str();
}
Run Code Online (Sandbox Code Playgroud)
如何以相同的方式将int写入位?我不想在二进制字符串的开头加上额外的0,这就是为什么我无法弄清楚每次如何创建一个可变长度.另外,我没有使用std :: bitset.
我正在读取大小为5的字符数组的输入,
stringstream ss;
char a[5];
if (!ss.read(a, 5))
{
// throw exception
}
if (!ss.get(a, 5))
{
// throw exception
}
Run Code Online (Sandbox Code Playgroud)
这两个功能似乎都有效,有什么区别吗?
int main()
{
int i;
if (cin >> i)
{
//ok
}
else
{
//error
cin.setstate(std::ios_base::goodbit);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我goodbit不能通过setstate()来清除failbit而不是cin.clear()?