char nach int (kein char nach ascii)
-
Hi,
ich habe folgendes Problem:
Ich möchte einen char (aus einem Array) in einen int konvertieren. Ich bin hier im Forum auf diese Code Zeile gestoßen:int bla; bla = char_traits<char>::to_int_type (CharVar);
Nur leider liefert mir diese Funktion den Ascii Wert des jeweiligen Feldes. Wenn im Feld eine 1 steht bekomme ich den Ascii Wert 49 zurück, was auch völlig korrekt ist. Nur würde ich gerne als Ergebnis ebenfalls 1 bekommen. Gibt es da eine Möglichkeit?
Für eine Antwort danke ich im voraus
-
int bla = CharVar - '0';
-
Das geht, wenn im aktuellen Zeichensatz zufällig alle Zahlen hintereinander liegen. Portabel geht es z.B. so:
#include <cstdlib> int char_to_int(char ch) { char buf[] = { ch, 0 }; return std::atoi(buf); }
-
operator void schrieb:
Das geht, wenn im aktuellen Zeichensatz zufällig alle Zahlen hintereinander liegen.
Der Standard garantiert das aber "zufällig"
-
der Standard garantiert mir für alle bel. Zeichensätze, die ich in meinem C++ Programm verwende, daß die Ziffern 0 bis 9 alle hintereinander liegen???
-
Huch. Also zumindest bei den Buchstaben tut er es nicht, deshalb hätte ich es bei den Ziffern auch nicht erwartet.
-
In both the
source and execution basic character sets, the value of each
character after 0 in the above list of decimal digits shall
be one greater than the value of the previous.Das ist zwar C99 5.2.1p3, aber der C++-Standard bezieht sich ja auf den C-Standard.