PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ Probs



hpf
14-05-2003, 12:55
hiho, ich habe ein kleines problem mit C++ ) (ich bin es aus java alles ein wenig anders gewohnt :) )
und zwar, möchte ich gerne eine char-Zeichenkette mit einem int verbinden, und das will ums verrecken nicht klappen, ich habe es schon mit IntToStr() und strcat() versucht, aber strcat() hat als argumente zwei char*, doch das ergebnis von IntToStr() ist ein ansi string, welcher nicht akzeptiert wird :(.
Hat jemand von euch ne idee ????


danke schon einmal im voraus,
euer hpf

tkortkamp
14-05-2003, 13:06
Hi!

Die einfachste Lösung ist es std::stringstream zu benutzen.
Ihn findest du in <sstream> (#include <sstream>).
Beispiel:


int number = 3;
std::stringstream string;

string << "Hallo Nr. " << number;

std::stringstream intern den std::string auf den du mit string.str() zugreifen kannst. std::string wiederrum benutzt eine char-Zeichenkette mit der du bei std::stringstream mit string.str().c_str() zugreifen kannst.

Für C guck dir snprintf an (man 3 snprintf).

c ya,
Tobias

hpf
14-05-2003, 13:10
ersteinmal danke für die schnelle Antwort, aber das problem ist, dass ich das ganze dann in eine variable gespeichert brauche, und es nicht ausgeben möchte :(
fällt dir dazu noch was anderes ein ???

wie gesagt, ich komme aus der Java schiene, da kann man einfach den int in nen char casten und per +Operator aneinanderketten

tkortkamp
14-05-2003, 13:32
?

Das ist doch dann in eine Variable gespeichert. <= std::stringstream string;
std::stringstream ist nicht mit std:cout und co. zu verwechseln.

string << "Hallo Nr. " << number;
bedeutet in etwas soviel wie
string = "Hallo Nr." + number

c ya,
Tobias

hpf
14-05-2003, 13:34
ohh, dann hatte ich das nicht gleich verstanden :)
danke

hpf
14-05-2003, 13:42
wenn tmp mein stringstream ist, pX[i].name ist eine char kette, und das ander ist nen int.

tmp << pX[i].name <<pX[i].playerNr;

aber als ergebnis, wenn ich tmp testweise ausgebe, bekomme ich nur eine kette von '0' un '1'.

wenn der name "Player" ist, und Nr = 1, bekomme ich folgendes ergebnis :
00000001

ist das normal ???

UPS: SORRY, ICH HATTE ETWAS ÜBERSEHEN, ES KLAPPT NUN :)