Schleifenvariable in String/Namen nutzen?!
-
Grimnok schrieb:
C++ in root.
Was ist das?
-
-
std::string getStr(std::string const& s, int number) { std::stringstream ss; ss << s << number; return ss.str(); }
-
Hey danke, ich hab hier im FAQ unterdessen weitergelesen und Int to Str gefunden und umgesetzt.
Es fehlt mir aber immernoch die essentielle Antwort

Mit welchem Befehl setz ich das denn nun dann an den Namen dran? Ich muss doch hier: new TCanvas("c_ noch irgend etwas dranschreiben?
-
Hat Skym0sh0 doch schon geschreiben?!
-
Tachyon schrieb:
Hat Skym0sh0 doch schon geschreiben?!
Hat er/sie?
Ich hab nun:
const Int_t pad_i = 16; TCanvas *canvases[pad_i]; for (Int_t i=1; i<pad_i; ++i) { ostringstream Str; Str << i; string ZahlAlsString(Str.str()); cout << ZahlAlsString << endl; canvases[i] = new TCanvas("c_%i","TestCanvas",50,50,1024,768); }Läuft, aber mit:
Warning in TCanvas::Constructor: Deleting canvas with same name: c_%i
-
Und wie soll er
c_%imit dem erstzen, dass Du mit dem stream zusammengebaut hast? Durch Magie? Du musst schon etwas nachdenken, undZahlAlsStringvielleicht auch irgendwie mal benutzen...
-
Tachyon schrieb:
Und wie soll er
c_%imit dem erstzen, dass Du mit dem stream zusammengebaut hast? Durch Magie? Du musst schon etwas nachdenken, undZahlAlsStringvielleicht auch irgendwie mal benutzen...Ja hast Du natürlich recht

Trotzdem, ich "kenne" das Zugreifen auf solche Variablen (%s müsste es ja nun sein) nur in sprintf Kommands mit eben "_%s", Variable, das tut sich aber in dem Kontext leider nicht. Ich steh da grade schon auf dem Schlauch und wäre über die Lösung sehr dankbar, dann kann ich sie zumindest im Reverseuntersuchungsgedankengang verstehen.
-
Ausnahmsweise mal...
const Int_t pad_i = 16; TCanvas *canvases[pad_i]; for (Int_t i=1; i<pad_i; ++i) { ostringstream Str; Str << "c_" << i; canvases[i] = new TCanvas(Str.str().c_str(), "TestCanvas",50,50,1024,768); }
-
Grimnok schrieb:
C++ in root.
*sigh* als ich "Histogramm" und "Canvas" gelesen hab hab ichs geahnt. Ein Jahr lang hab ich mich mit dem Scheiß für meine Diplomarbeit rumschlagen müssen, bin immernoch traumatisiert

Hier ein Lösungsansatz:
const Int_t pad_i = 16; TCanvas *canvases[pad_i]; for (Int_t i=1; i<pad_i; ++i) { ostringstream sstr; sstr << "c_" << i; string canvasName = sstr.str(); canvases[i] = new TCanvas(sstr.c_str(),"TestCanvas",50,50,1024,768); }
-
Danke ihr beiden, nun hab ich das Konzept auch durchaus besser verstanden. Und kanns anderweitig nutzen.
@pumuckl: Ja Root... ein Quell ewiger Freude... Ist halt zu der Zeit in der Uni nichts mit "wir lernen C++ von der Pike" sondern eher "Also das is Root, mach mal".