Ist es möglich, ein Verfahren zu schreiben, die eine string nimmt und hat es in etwa so aussehen,C++ verwendet string nach << als Parameter
void method(string str)
void printStringStream(StringStream& ss)
{
method(ss.str());
}
und kann wie diese
stringstream var;
printStringStream(var << "Text" << intVar << "More text"<<floatvar);
genannt werden Ich sah den < Operator nach oben und es sieht aus wie es ein ostream&
Objekt zurückgibt, aber ich lese wahrscheinlich this
falsch oder einfach nicht richtig implementieren.
Wirklich alles, was ich will, ist eine saubere Möglichkeit, Sachen zusammen als eine Kette zu verketten und es an eine Funktion zu übergeben. Das sauberste Ding, das ich finden konnte, war ein Stringstream-Objekt, aber das lässt noch viel zu wünschen übrig.
Hinweise:
kann ich nicht viel von c++11
Antworten verwenden, weil ich auf Visual Studio 2010 ausgeführt wird (gegen meinen Willen, aber immer noch)
Ich habe Zugang zu Boost
so geht Nüsse damit.
Ich wäre nicht gegen eine benutzerdefinierte Methode, solange es diese Unordnung aufräumt.
Edit:
Mit @Mooing mit @PiotrNycz Syntax Ente Antwort gemischt ich mein Ziel geschriebenen Code wie dies erreicht,
try{
//code
}catch(exception e)
{
printStringStream(stringstream() << "An exception has occurred.\n"
<<" Error: " << e.message
<<"\n If this persists please contact "<< contactInfo
<<"\n Sorry for the inconvenience");
}
Das so sauber ist und gut lesbar, wie ich gehofft hätte zum.
Hoffentlich hilft dies anderen anderen beim Schreiben von Nachrichten.
Visual Studio 11 verfügt über die gesamte C++ 11-Bibliothek und einige der Sprachfunktionen. _Welches_ Visual Studio sind Sie beschränkt? Abgesehen von der Großschreibung sieht der Code für mein Auge gut aus. sollte gut funktionieren. –
Hast du das versucht? Wenn ja, was ist passiert? Wenn nicht - warum? –
Warum füllst du den Stream nicht zuerst und gibst ihn als Argument weiter? –