String zusammenbauen
-
Hallo,
kann mir jemand sagen, was der beste Weg ist um einen String mit Variablen zusammenzusetzen?
Angenommen ich habe eine Methode die in eine Datenbank und in eine Datei loggt. In diese will ich jetzt schreiben, dass ein Client sich verbunden hat.
void Log::storeLog(string logMessage)Also muss ich einen String haben, den ich übergeben kann. Die IP des Hosts und die Nachricht ergeben aber ja nun zwei Teile die ich verbinden muss.
Das habe ich jetzt mit einem Stringstream gelöst:stringstream newclmsg; newclmsg << "Client " << inet_ntoa(address.sin_addr) << " connected."; log.storeLog(newclmsg.str());Das wirkt auf mich aber etwas oversized...
Danke für Vorschläge!
Bis dann!
// Edit: Ich sehe gerade, dass ich das aus Versehen in Linux/Unix geposted hab... Sollte wohl eher in das generelle C++ Forum. Sorry!
// Edit2: String und String kann man natürlich mit einem "+" verbinden - Mir geht es aber darum einen String mit einem anderen Typen zu verbinden.
-
stanmc schrieb:
Hallo,
kann mir jemand sagen, was der beste Weg ist um einen String mit Variablen zusammenzusetzen?
Angenommen ich habe eine Methode die in eine Datenbank und in eine Datei loggt. In diese will ich jetzt schreiben, dass ein Client sich verbunden hat.
void Log::storeLog(string logMessage)Also muss ich einen String haben, den ich übergeben kann. Die IP des Hosts und die Nachricht ergeben aber ja nun zwei Teile die ich verbinden muss.
Das habe ich jetzt mit einem Stringstream gelöst:stringstream newclmsg; newclmsg << "Client " << inet_ntoa(address.sin_addr) << " connected."; log.storeLog(newclmsg.str());Das wirkt auf mich aber etwas oversized...
Danke für Vorschläge!
Bis dann!
// Edit: Ich sehe gerade, dass ich das aus Versehen in Linux/Unix geposted hab... Sollte wohl eher in das generelle C++ Forum. Sorry!
// Edit2: String und String kann man natürlich mit einem "+" verbinden - Mir geht es aber darum einen String mit einem anderen Typen zu verbinden.Und dafür ist ein stringstream ideal und absolut nicht 'oversized' !
-
Dieser Thread wurde von Moderator/in nman aus dem Forum Linux/Unix in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Das ist wirklich die übeliche Vorgehensweise, wenn man mehrere Variablen zusammenbauen will.
-
Ich hab mal folgendes gesehen:
void net::send(const char *from, const char *lst, ..)Hier wurde ueber die variable Parameterliste ein String zusammen gebaut. das sieht dann so aus:
net.send("String1: ", var1, " string2 ", (const char*)var2, NULL);In wie weit das jetzt Sinnvoll ist, weiss ich nicht, vielleicht koennt ihr mir das sagen?
-
Ich könnte mir vorstellen dass die "net::send"-Variante etwas schlechtere Performance aufweist, da sie sicherlich mehr tut als nur Strings zusammenbasteln. Wäre das nicht so würde sie wohl anders heissen

-
Ich danke euch!

-
stringstream ist hier nicht nötig da inet_ntoa einen char* zurück gibt.