eigene stream-manipulatoren mit parametern verwenden
-
David_pb schrieb:
Wenn dus so lösen willst brauchst du dir nich so einen Umstand machen.
Der "Umstand" ja nur deswegen, damit er direkt in einen Stream schreiben kann. Aber hast schon recht, wenn man ein Manipulator mit Argumenten braucht, dann tuts ein std::string dual(...) am besten und einfachsten.
-
@David_pb
Das ist aber strenggenommen kein Manipulator, sondern eine "einfache" Funktion.
Wie sinnvoll es ist, dieses "Dezimal nach Dual" als Manipulator zu implementieren, sei jetzt mal dahingestellt.
-
KasF schrieb:
David_pb schrieb:
Wenn dus so lösen willst brauchst du dir nich so einen Umstand machen.
Der "Umstand" ja nur deswegen, damit er direkt in einen Stream schreiben kann. Aber hast schon recht, wenn man ein Manipulator mit Argumenten braucht, dann tuts ein std::string dual(...) am besten und einfachsten.
NEIN, das ist K-E-I-N manipulator!
das ist deshalb wichtig, da daraus später noch sowas wie std::hex wird und zeig mir mal wie du cout mit einem string verändern willst.
-
rudi++ schrieb:
NEIN, das ist K-E-I-N manipulator!
Das ist mir schon klar, lies meinen Satz nochmal und verstehe ihn anders

rudi++ schrieb:
zeig mir mal wie du cout mit einem string verändern willst.
Was meinst du damit ?
-
rudi++ schrieb:
das ist deshalb wichtig, da daraus später noch sowas wie std::hex wird und zeig mir mal wie du cout mit einem string verändern willst.
Was genau meinst du damit?
Ich seh da kein Problem.
-
er meint
std::cout << std::hex << dual(...);
-
std::cout<<std::hex<<123456<<654321<<std::endl;std::cout<<dual(123456)<<654321<<std::endl;(dual gibt hiern nen String zurück.)
beim ersten werden alle zahlen, die man in den stream schiebt in hexadezimaler schreibweise ausgegeben, beim zweiten wird nur die ausgabe der ersten zahl verändert. ich wollt deshalb sowas wie std::hex basteln, bei dem dann auch alle nachfolgenden zahlen in binärform ausgegeben werden.std::cout<<dual<<0xff<<std::endl<<0x0f<<std::endl;ausgabe:
11111111
00001111
-
Also das wird schwierig, weil du dazu in die Ausgaberoutinen für int-Werte eingreifen müsstest - und die Standard-Streams sind nicht darauf ausgelegt, Zahlen binär auszugeben. (der richtige Angriffspunkt wäre der
ostream::operator<<(int), aber den solltest du als Programmierer nicht angreifen)
-
Das wird nich gehen weil sich der Stream ja merken müsst das du dich im dualen "Modus" befindest. Das geht beim std::hex Manipulator über Flags die gesetzt werden, die aber schon standardmäßig vom std::basic_ios angeboten werden. Da Dualzahlen aber nicht im Repertoire von std::ostream zu finden sind wirst dus nicht so einfach hinbekommen.
grüße
-
Alles schon gesagt, benutz das was dir am liebsten ist
