C++: int nach string.

Spacemojo

Spacemojo

Aktives Mitglied
Thread Starter
Dabei seit
16.05.2004
Beiträge
624
Reaktionspunkte
21
Hi!
Wie macht man das in ansi-C++?
int x soll in einen string umgewandelt werden (also nicht in ein char-Array)


Tobi
 
Es gibt glaub eine Funktion die itoa(); heisst oder mit sprintf(); sollte es auch gehen.

Edit: Ahh ne vergiss es ist nicht für C++ Strings geeignet glaub ich. Sorry

Gruß Daniel D.
 
Bisher mach ich das mit sprintf, ich denke dass es aber sicher auch einfacher geht.
 
Ich würde es mit einem Stringstream machen. Etwa so:
Code:
#include <iostream>
#include <sstream>
using namespace std;

int main(int argc, char** argv) {

     int i = 10;

     ostringstream s;
 
     if (s << i) { cout << "String: " << s.str(); }

     return 0;

}
 
Geht das nicht evtl. mit einem Typecast (kenne mich
eigentlich nur mit C aus, sollte sich aber bei C++ ge-
nauso verhalten)?

Also:
Code:
int i = 666;
strcpy(string, (char *)  i);
 
Danke!
Die stringstream-Sache funktioniert sehr gut. Ich hab bisher nur gedacht, dass das kein ANSI ist, aber anscheinend doch...

Tobi
 
moses_78 schrieb:
Geht das nicht evtl. mit einem Typecast (kenne mich
eigentlich nur mit C aus, sollte sich aber bei C++ ge-
nauso verhalten)?

Code:
int i = 666;
strcpy(string, (char *)  i);


Der Beitrag ist schon etwas alt aber ich bin über google hier gelandet und kann das wirklich nicht so stehen lassen. Es ist immerhin der 1. Treffer bei google wenn man "c++ int to string" eingibt.

NEIN, du kennst dich NICHT mit C aus!!!!!!!!!!!!!!!!
An dem Code stimmt auch sowas von gar nichts und zeigt nur, dass du nicht mal die Basics von C verstanden hast. Das soll jetzt nicht beleidigend sein, nur ist es einfach in den letzten Jahren in Mode gekommen überall irgendwas schreiben zu müssen ohne Ahnung zu haben.

Egal wohin du es casten möchtest, es kann gar nicht funktionieren, da der pointer auf die Adresse 666 zeigt, was nahezu unwahrscheinlich eine gültige Adresse sein kann. Dazu kommt noch, dass selbst WENN, an der Stelle unwahrscheinlich der Inhalt 666 stehen wird. Warum auch? Und selbst wenn es funktionieren WÜRDE, was nahezu unmöglich ist, dann gibts da noch den Ascii Code. Denn Code int 6 ist nicht gleich Zeichen 6, denn das wäre je nach Zeichencode die 54(ascii).

Das Programm würde also abstürzen und mehr nicht!

Als Hinweis für alle:
Ignoriert den Code von moses_78 einfach!
 
Zurück
Oben Unten