2016-07-14 7 views
-4

Hallo :) Ich versuche, eine Umwandlung einer Zeichenfolge in ein int mit C++ zu tun. Ich habe versucht, stol, stoll und strtol Funktionen zu verwenden und (vielleicht benutzte ich sie falsch), aber sie schienen meine Zeichenfolge im wörtlichen Sinn nicht zu bewahren.Umwandlung von String in int im Wortsinn

Frage: Wie würde ich gehen buchstäblich eine Zeichenfolge mit 0s und 1s zu einem int zu konvertieren, so dass mein int ist genau wie meine Zeichenfolge war.

Beispiel:

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

es zu schätzen wissen!

+3

Mögliches Duplikat [Konvertieren von Zeichenfolge von 1 und 0 in binären Wert] (http://stackoverflow.com/questions/117844/converting- String-of-1s-und-0s-in-binary-Wert) – OldProgrammer

+0

'int' speichert numerische Werte. '10011' und' 010011' haben den gleichen Wert. was du beschreibst speichert tatsächlich eine Zeichenkette ... also bleib bei deiner Zeichenkette –

+0

Wahrscheinlich wirst du keine führenden Nullen behalten können, wenn du von string -> int -> string gehst. Jede der Parsing-Funktionen, die Sie erwähnt haben, kann innerhalb des Grundes eine ganzzahlige Repräsentation einer Zeichenkette erzeugen. – evaitl

Antwort

0

Nun, Sie 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()); 

Um mehr pedantisch über Größe, statt std::bitset<32> verwenden können, können Sie tun:

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

Um die Zeichenfolge zurück (na ja, nicht genau):

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

Zusätzlich zu trimmen die führenden Nullen aus, sp aus:

auto x = sp.find_first_not_of('0'); 
if(x != string::npos) 
    sp = sp.substr(x); 
+0

Hey vielen Dank für die Antwort. Ich werde versuchen, deinen Ansatz zu versuchen :) – Michael