|
Quellcode
|
1
|
patt.push_back('i+1');
|
Was passiert hier eigentlich intern? Ich behandle das ganze ja wie ein einzelnes chracter. Wird dann das ganze ding 'i+1' einmal übersetzt und dann nie wieder verändert? Also ein const-Wert? Würde mich interessieren.
-----------------
Also ich habe jetzt einige Sachen ausprobiert. Zuerst kam ich auf die Idee mit sprintf(); einen string zusammenzubasteln und dann an die push_back() funktion zu übergeben - ging nicht. Dann hab ich folgendes versucht:
|
Quellcode
|
1
|
patt.push_back(to_string(j+1));
|
Ging auch nicht.
Daher meine endgültige Lösung:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
string pattern(int n){
string patt;
if(n < 1)
return (patt="");
for (int j=0; j < n; j++)
{
for (int i=0; i <= j; i++)
patt = patt + to_string(j+1); // das funktioniert :)
patt.push_back('\n');
}
return patt;
}
|
Warum haben die beiden ersten Wege nicht geklappt? Bei sprintf() ist das erste Argument ein Zeiger auf den Ziel-
String. Funktioniert es deshalb nicht? Weil push_back() ein einzelnes chracter erwartet und sprintf() mit strings hantiert? std::to_string() gibt als rückgabewert einen string zurück. Das scheint wieder das gleiche Problem zu sein - es liefert einen string aber push_back() möchte ein einzelnes character.