Strings zusammenbauen
-
Hallochen,
kann ich in C++, ähnlich wie in php mit dem . Operator, Strings aus Textteilen und Variablen (int) zusammenbauen und wie mache ich das.Also im Stil von:
CString str = "Teil1" . intVar1 . "Text2" . intVar2 . "usw.";Mit dem + Operator kann man scheinbar nur Strings aneinanderhängen, sonst kommt nur blödsinn raus.
Die Lösung sollte möglichst einfach sein, weil sich der String aus vielen Teilen zusammensetzt. Wenn man jedesmal eine explizite Typumwandlung machen müsste und alles einzeln aneinanderhängen muss gäbe das einen haufen Code.
Kann mir da jemand helfen.
Dankeschön schonmal.
-
Es gibt in der Klasse CString eine Funktion namens Format.
CString str; str.Format("int: %d, string: %s", 12345, "Hallo");
Der String beinhaltet nun:
int: 12345, string: Hallo
-
Wenn du den ganzen Code in nem AnsiString zusammensetzt und den dann als gesamtes umwandelst müsste das doch auch deinen Anforderungen entsprechen, oder?
AnsiString Code = "Text1: " + x + " Text2: " + y; Code.c_str();
Dadurch ersparst du dir die Umstellung der Reihenfolge.
Hoffe das war so wie du das meintest ...
-
Nicht getestet, aber eventuelle Korrekturen solltest du in der Hilfe finden:
#include <sstream> ... std::ostringstream ostr; ostr << "Hallo" << 5 << 0.6 << true << &ostr; std::string s = ostr.str();
Das macht genau, was du suchst, und zwar portabel und sicher.
-
AnsiString ist aber nicht "Standard", sondern von Borland (VCL). Im Standard gibts nur string oder char-Arrays.
-
Danke Ihr. Die Lösung von MaSTaH funktioniert ohne Probleme, ist allerdings mit den Variablen am Ende ziemlich unübersichtlich.
Die Lösung von operator void tut auch genau das was ich wollte. Hier hatte ich nur das Problem, dass meine Ausgaben nur mit CString-Objekten und nicht mit string funktionieren. Deshalb hat es mit dem Testen auch etwas länger gedauert.
Danke, das hat mir eine Menge weitergeholfen.
-
@Rübennase: Das nächste Mal solltest du so eine Frage aber besser in dem MFC Forum stellen
.