使用std::string流解析二进制格式的数字

8

我需要解析一个包含二进制格式数字的std::string,例如:

0b01101101

我知道我可以使用std::hex格式说明符来解析十六进制格式的数字。

std::string number = "0xff";
number.erase(0, 2);
std::stringstream sstream(number);
sstream << std::hex;
int n;
sstream >> n;

有没有二进制格式的等效物?

你可以使用std::bitset的字符串构造函数。 - πάντα ῥεῖ
二进制没有等效的操作器。 - eerorika
2个回答

11
你可以使用 std::bitset 字符串构造函数,然后将 bitset 转换为数字:
std::string number = "0b101";
//We need to start reading from index 2 to skip 0b
//Or we can erase that substring beforehand
int n = std::bitset<32>(number, 2).to_ulong();
//Be careful with potential overflow

0
你可以尝试使用 std::bitset
例如:
跳过前两个字节 0b
#include <bitset>
...
std::string s = "0b0111";
std::bitset<4>x(s,2); //pass string s to parsing, skip first two signs
std::cout << x;

char a = -20;    
std::bitset<8> x(a);
std::cout << x;

short b = -427;
std::bitset<16> y(c);
std::cout << y;

从字符串解析? - πάντα ῥεῖ
这不是OP所要求的。请再仔细阅读一遍。 - πάντα ῥεῖ
你可以将 string 解析为 bitset,在移除 string 的前两个字符后。 - proton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接