stringstream als argument an funktion?
-
ich möchte nen strinstream direkt in ner funktion als argument angeben
also so das ich die << in der funktion verwenden kann
void funktionx(stringstream); int main() { ... funktionx("test" << testvar << "test"); ...
kann mir jemand sagen ob und wie das funktioniert?
[EDIT] also es muss nicht unbedingt ein stringstream sein, mir geht es einfach darum das ich beim aufruf der funktion texte und variablen in einem stück übergeben kann ohne das ganze vorher in eine variable zusammenzuführen
-
Ich weiß nicht genau, was das Problem ist bzw. warum Du nicht einfach mit std::strings hantieren kannst, aber da das keine Unix-spezifische Frage ist, verschiebe ich Dich einfach mal ins Standard-C++-Forum.
-
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.
-
Hm. Falls du, wie dein Beispiel vermuten lässt, nicht die Funktion sondern eher den Funktionsaufruf meinst wäre boost::format evtl was für dich.
-
ich möchte ja alle möglichen variablen und auch textfragmente übergeben
das kann ich zum beispiel an nen stringstream ohne irgendetwas umzuwnadeln mit <<also auch verschiedenen zbsp:
sstream << "SELECT * FROM testdb WHERE x='" << varx << "' AND y='" << vary << "' ORDER BY x"
wobei varx beispielsweise ein int ist und vary charsorry aber mit boost::format kann ich relativ wenig anfangen da ich anfänger bin
wie kann man eigentlich 2 strings verbinden?
-
wie kann man eigentlich 2 strings verbinden?
Mit + natürlich.
Versuchs doch mal mit ner Referenz auf stringstream.
-
#include <iostream> #include <string> #include <sstream> #include <boost/format.hpp> void foo( const std::string& str ) { std::cout << "foo: " << str << std::endl; } int main() { int varx = 42; char vary = 'q'; std::string myQuery("SELECT * FROM testdb WHERE x='%1%' AND y='%2%' ORDER BY x"); // Variante #1 std::stringstream sstream; sstream << "SELECT * FROM testdb WHERE x='" << varx << "' AND y='" << vary << "' ORDER BY x"; foo(sstream.str()); // Variante #2a foo((boost::format("SELECT * FROM testdb WHERE x='%1%' AND y='%2%' ORDER BY x") % varx % vary).str()); // Variante #2b foo((boost::format(myQuery) % varx % vary).str()); }