2016-07-14 26 views
-4

你好:)我正在嘗試使用C++將字符串轉換爲int。 我已經嘗試使用stol,stoll和strtol函數和(也許我正在使用它們錯誤),但它們似乎並沒有保留字面意義上的字符串。在字面意義上將字符串轉換爲int

問題:我會如何將包含0和1的字符串轉換爲int類型,以便我的int類型爲,正如,就像我的字符串一樣。

例子:

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

不勝感激!

+3

([轉換1s和0s成二進制值的字符串]的可能的複製http://stackoverflow.com/questions/117844/converting-字符串1s和0s轉換爲二進制值) – OldProgrammer

+0

「int」存儲數值。 '10011'和'010011'是相同的值。你所描述的實際上是存儲一個字符串......所以堅持使用你的字符串 –

+0

當你從字符串 - > int - >字符串轉換時,你可能不能保存前導0。您提到的任何解析函數都可以在合理範圍內創建一個字符串的整數表示。 – evaitl

回答

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); 
+0

嘿謝謝你的回覆。我會考慮嘗試你的方法:) – Michael