Inhalt einer char-Variable mehrmals ausgeben
-
Hallo Forum,
ich möchte den Inhalt einer Char-Variablen mehrfach ausgeben.bisher mache ich es so, aber das ist nur bei definiertem j möglich, sobald j 3 5 10 oder gar 100 sein müsste, geht es nicht mehr. j*l ist ein Denkanstoss, aber falsch :
[code] if (j==2) { cout<<l<<l<<l<<l<<l<<l<<"^"<<l<<l<<"^"; //Wie kann ich l j-mal ausgeben }; if (j==1) { cout<<l<<l<<l<<"^"<<l<<l<<"^"; //Wie kann ich l j-mal ausgeben }; if (j==0) cout<<"^"<<l<<l<<"^"; [/code]
-
Mit Schleifen.
-
ich hoffe, ich habe dich richtig verstanden
void ausgeben (char buchstabe, int anzahl) { fill_n(ostream_iterator<char>(cout, " "), anzahl, buchstabe)); }
gibt buchstabe anzahl mal aus.
-
@davie: gibts einen Grund für diese Komplexität ausser das Wegfallen der Schleife? Was ist z.B. besser daran als das hier:
void ausgeben(char buchstabe, int anzahl) { for (int i = 0;i < anzahl;i++) cout << buchstabe; // ev. noch ein << flush; }
-elvis
-
gewohnheitssache. außerdem hat helium schon schleifen erwähnt.
-
@davie- Du hast mich richtig verstanden, aber mir erschien das ganze auch recht kompliziert.
[quote="davie"]
fill_n(ostream_iterator<char>(cout, " "),.......;
ist doch in einer der header definiert, iostream.h ? Zuminest ist es mir beim debuggen schon mal aufgefallen.
-Mario
-
std::fill_n kommt aus <algorithm> und ostream_iterator aus <iterator>
-
Hallo Forum,
Eure Anregungen haben mir sehr geholfen, Danke dafür.
ich habs jetzt so gemacht:
[cpp] int leer_aus(int anzahl) { char lz=' '; for (int i = 0;i < anzahl;i++) cout <<lz<<lz<<lz; return(0); }; Also nochmal Danke :)
[/cpp]
-
nur noch eines: sfds
-
@davie:
Der erste Paramter von fill_n braucht einen Iterator auf das erste Element des zu füllenden Speichers.
ostream_iterator mit zwei Parametern liefert anscheinend so einen iterator, der für Ausgabe geeignet ist.
Zweiter ctor-Parameter ist ein Delimiter, wozu ist dieser?MfG MAV
-
das " "?
damit die zahlen abgetrennt sind und nicht in einer wurst erscheinen. natürlich geht auch "\n" oder ", ". wird einfach nach jeder zahl mit ausgegeben.
-
Hm, aber der erste Parameter von fill_n fordert doch einfach nur einen iterator auf das erste Element des Streams, in den geschrieben werden sollen, und ein iterator gibt doch eigentlich nur eine Position an, oder?
ostream_iterator... eine Positionen eines ostreams, oder wie?MfG MAV, der allein mit der MSDN noch nicht dahinter kommt
-
iterator ist nicht unbedingt etwas um in einem array herumzuhantieren fill_n;
iteratoren gibt es in mehreren kategorien (google: iterator_category)
fill_n erwartet einen Output Iterator
-
Übersicht: Iteratoren
-
Ah, wieder mal vielen Dank.
-
Hi,
da Ihr Euch so intensiv mit meiner Vorgabe beschäftigt:
davie schrieb:
das " "?
damit die zahlen abgetrennt sind und nicht in einer wurst erscheinen. natürlich geht auch "\n" oder ", ". wird einfach nach jeder zahl mit ausgegeben.Ich habe mir hiermit die Möglichkeit geschaffen, die Sortierfunktionen aus Volkards C++ Tutorial in Einzelschritten laufen zu lassen und somit einfacher zu begreifen.
z.B.:
9 8 7 6 5 4 3 2 1
^ ^ <---------------- das Verrücken der Sortierzeiger mache ich mit den Leerzeichen.Mario