Ganzzahlen selbstständig in Strings umwandeln



  • Hey, ich arbeite momentan an einem C++ Buch und bin auf eine Übungsaufgabe gestoßen, die von mir verlangt, dass ich einen String in eine ganze Zahl vom Typ long umwandeln soll. Hierbei sollen keine Hilfsfunktionen oder dergleichen verwendet werden. Mittlerweile habe ich schon in den Lösungen geschaut und diese Lautet wie folgt :

    string str = ("");
    	cout << "Geben Sie eine Zahl ein: ";
    	cin >> str;
    	long z = {0};
    	for (size_t i=0; i<str.size(); i++)
    	{
    		z*=10;
    		z+= (int)str.at(i) - (int) '0';
    	}
    

    Meine Frage an dieser Stelle : Wieso wird von dem String die Ziffer '0' abgezogen? Laut Tabelle hat '0' den Wert 48 und deshalb verstehe ich momentan überhaupt gar nichts mehr.



  • Es wird nicht vom String abgezogen, sondern von dem "aktuellen" Zeichen im String:
    '1' - '0' => 49 - 48 => 1



  • Wie heißt das Buch, das du hast?



  • manni66 schrieb:

    Es wird nicht vom String abgezogen, sondern von dem "aktuellen" Zeichen im String:
    '1' - '0' => 49 - 48 => 1

    Verdammt.. da hätte ich auch selber drauf kommen können. Danke, jedenfalls habe ich das Prinzip jetzt verstanden.

    out schrieb:

    Wie heißt das Buch, das du hast?

    Das Buch heißt "Der C++ Programmierer". Mir wurde im Forum empfohlen mich erst mal mit normalen C++ auseinander zu setzen, bevor ich mich mit Spiele-Programmierung beschäftige. In diesem Sinne habe ich mir das buch angelegt.. http://www.cppbuch.de/



  • Fabolous12 schrieb:

    Das Buch heißt "Der C++ Programmierer". Mir wurde im Forum empfohlen mich erst mal mit normalen C++ auseinander zu setzen, bevor ich mich mit Spiele-Programmierung beschäftige. In diesem Sinne habe ich mir das buch angelegt.. http://www.cppbuch.de/

    Ok, das Buch ist auf jeden Fall gut. Manche Teile der Lösung find ich dennoch strange. 😃


Log in to reply