char-array in int umwandeln
-
mein Programm erhält als Parameter-Übergabe Wert in folgendem Stil:
12345-67
(wird als char[] übergeben)
Wollte nun fragen wie ich 12345 in eine int-Variable speichern kann.
Die Stelle wo das Minus ist kenn ich, aber wie ich den Rest in ne Variable krieg nicht.CU Samptron
-
Ich hab zwar keinen Code, würd das Char-Array aber in einen std::string packen, das Minus entfernen und dann atoi() aufrufen.
mfg
Glamdring
-
Ungetestet und ohne Fehlerbehandlung:
#include <cstdlib> void DeineFunktion(char str[]) { long val = std::strtoul(str, 0, 10); ... }
strtoul hört einfach da auf zu lesen, wo es nicht weiter kommt -> wahrscheinlich bei "-". Wenn du nicht sicher bist, dass die Eingabestrings immer gültig sind, kannst du auch noch ein Bisschen überprüfen - strtoul ist relativ mächtig, siehe deine Lieblingsreferenz dafür
-
Hi!
Danke für den Hinweis.
Aber long Variabeln sollen wir nicht benutzen und auch leider nur "bekannte" Funktionen. Hab das ganze so gelöst:int multiplikator(int x) { int multi=1; const int fact=10; for(int i=0;i<x;i++) { multi=multi*fact; } return (multi); } // Ausschnitt aus meiner anderen Funktion for(int i=0; i<minuspos; i++) { int count=minuspos-i-1; int multi=multiplikator(count); Nummer=Nummer+(multi*(arg[i]-48)); } // Ende des Ausschnitts
Also jede Ziffer wird mit dem Entsprechen Multiplikator malgenommen und
anschließend alles zusammen addiert:
BSP: 12345-67110000
2 1000
3* 100
4* 10
5* 112345 --> INT!
Ist zwar heavy, funzt aber wunderbar!
CU Samptron
-
Naja, wenn du jetzt statt 48 noch '0' verwendest, ist es vermutlich sogar portabel
-
ja klar, will aber leider nicht den ASCII-Wert