Integer zu String
-
Also mein Problem ist, dass die unten stehende Funktion eine Zahl in einen String umwandeln soll. Sofern die Zahl 0 ist, geht's auch, das Problem tritt nämlich in der for Schleife auf. Dort stürtzt die gesamte Funktion ab. Das Programm aber NICHT!
Ich denke mal, dass ich da irgendwo etwas 'illegales' mache
Für Hilfe wäre ich dankbar:void MakeChar (const int iVal, char *& szBuffer) { if (iVal == 0) { szBuffer = new char [2]; strcpy (szBuffer, "0"); return; } int iBufferLen = 1, iRun = 1, iTest = 1, iVal2 = iVal; while (true) { if (((iVal / iTest) >= 1) && ((iVal / iTest) < 10)) { iBufferLen = iRun; break; } iRun++; iTest *= 10; } szBuffer = new char [iBufferLen + 1]; for (int i = 0; i < iBufferLen; i++) { szBuffer [i] = (iVal / iTest) + 48; iVal2 = iVal2 % (iVal2 / iTest) * iTest; iTest /= 10; } szBuffer [iBufferLen] = '\0'; }
MfG pLuSmaN
-
versuchmal mit
[cpp]int help = (iVal / iTest) + 48;
szBuffer [i] = (string)help;
ich weiß nicht genau ob es so richtig ist, aber du mußt casten.
-
Versuchs doch mal mit <boost/lexical_cast>
Damit könntest du dir die Aufgabe wesentlich vereinfachen.
mfg JJ
-
Was spricht eigentlich gegen stringstreams???
C/C++ Forum :: FAQ - C++ :: Einmal Zahl nach String und zurück
Gruß Wolle
-
Tut mir leid, dass ich vergaß zu erwähnen, dass ich keine umschreibungen oder sonst was möchte, sondern nur den Fehler in dieser Funktion wissen möchte. Ich kann nämlich auf nichts anderes zurückgreifen, da das ganze etwas komplizierter ist und hinterher nicht mit Integern arbeitet.
-
Das geht IMHO auch einfacher:
std::string IntToString (int Number) { char Buf[10]; int i=0; bool Neg=false; if (Number<0) { Number=-Number; Neg=true; } else if (!Number) return std::string ("0"); while (Number>0) { Buf[i]=Number%10+'0'; Number/=10; i++; } std::string Result; if (Neg) Result+='-'; for (int x=i; x>=0; x--) Result+=Buf[x]; return Result; }
Entsprechend für c-strings. Ist wie Quersumme berechnen.
-
Was macht eigentlich diese Parameterkonstruktion???
char *& szBuffer
-
szBuffer ist einen Referenz auf einen Zeiger auf char
-
ah klar, war noch bei C-Code. Dame.
THX.