Multiple String addition
-
Ich kann ja zu einem String mit
str = str +"1"+"2"1 und 2 mit s verbinden. Dies klappt allerdings nicht mit
str += +"1"+"2"(was man von anderen sprachen gewöhnt ist. Gibt da nen umweg, so dass es mit += klappt und keine Meldung à la "Zwei Zeiger konnten nicht addiert werden" kommt
Wie löst man ferner das Problem, wenn man ein string und ein int in string packen will?
str = s +"string"; sprintf(s,...);// wobei dies ja auch nur ein char* ausgibt...? Hat int keinen impliziten cast nach string?
Verdammt, ich bin wohl von high-level sprachen verwöhnt
Edit: Ich kenne http://www.c-plusplus.net/forum/viewtopic-var-t-is-39488.html
Aber das is irgendwie nicht gerade eine bequeme art
-
std::string str("Das ist ein "); str += "Test"; str += " der" + std::string(" 2.!");...
std::ostringstream ss; ss << variable; std::string str(ss.str());
-
Intuitiv,dass ich nicht direkt selber drauf gekommen bin!

Danke.
-
Dh aber dass ich ne menge Overhead habe um 3 ints in einen String zu packen, nicht wahr?
Korrektur, wie zum Geier geb ich denn 3 ints an, ohne gleich drei ostringstreams zu erzeugen? mit .clear() schein ich ja nicht wirklich was zu bewirken und der Defaultconstructor meckert, weil er auf einmal keine 0 Argumente nimmt
-
#include <iostream> #include <sstream> #include <string> using namespace std; int main() { stringstream ss; ss << 1 << 2 << 3 << 4; string s = ss.str(); cout << s << endl; cin.get(); return 0; }
-
Ist zwar auch "overkill", aber guck dir einfach mal Boost.Format an.
#include <string> #include <boost/format.hpp> void foo() { int a, b, c; // ... std::string s = str(boost::format("%d, %d, 0x%08x") % a % b % c); }EDIT: oder boost::lexical_cast
#include <string> #include <boost/lexical_cast.hpp> // bin mir nicht 100% sicher, aber ich denke das file heisst so void foo() { int x = 123; std::string s = boost::lexical_cast<std::string>(x); // verwendet intern auch nen stringstream }