从字面意义上将字符串转换为int

时间:2016-07-14 00:19:30

标签: c++ string int type-conversion

你好:)我正在尝试使用c ++将字符串转换为int。 我尝试过使用stol,stoll和strtol函数(也许我使用它们错了)但是它们似乎并没有保留我的字符串。

问题:如何将包含0和1的字符串逐字转换为int,以便我的int 完全就像我的字符串一样。

示例:

string s = "00010011";
int digits = 0; // convert int to: digits = 00010011;

欣赏它!

1 个答案:

答案 0 :(得分:0)

好吧,你可以使用std::bitset

string s = "00010011";
int digits = 0; // convert int to: digits = 00010011;

std::bitset<32> bst(s);
digits = static_cast<int>(bst.to_ulong());

对于大小更迂腐,而不是std::bitset<32>,你可以这样做:

std::bitset<(sizeof(int) * 8)> bst(s);

要取回字符串(好吧,不完全是)

std::string sp = std::bitset<32>(digits).to_string();

此外,要修剪sp

中的前导零
auto x = sp.find_first_not_of('0');
if(x != string::npos)
    sp = sp.substr(x);