Ich arbeite an untenstehendem Code:
%Vor%Es druckt 1 und etwas Müll.
Warum verhält sich cout
so?
cout << a
gibt einen Wert aus, der Ihnen als unbrauchbar erscheint. Es ist eigentlich kein Müll. Es ist nur ein nicht druckbares ASCII-Zeichen, das trotzdem gedruckt wird. Beachten Sie, dass ein ASCII-Zeichen, das 1
entspricht, nicht druckbar ist. Sie können prüfen, ob a
druckbar ist oder nicht, std::isprint
als:
Es wird 0
(gelesen: false
) gedruckt, was darauf hinweist, dass das Zeichen nicht druckbar ist
-
Wenn Ihr cout
auch 1
ausgeben soll, dann geben Sie a
an:
Sie müssen a
als Ganzzahl eingeben als cout<< (int)(a);
. Damit beobachten Sie 1
auf der Ausgabe. Mit cout << a;
ist der Ausdruck SOH (Start of Heading)
entsprechend dem ascii Wert von 1
, der nicht gedruckt werden kann. Daher werden einige Sonderzeichen beobachtet.
BEARBEITEN :
Um genauer zu sein, sollte die cout
-Anweisung cout << static_cast<unsigned>(a)
sein, wie Nawaz erwähnt hat.
Ich hatte ein ähnliches Problem hier , dass ich ' lange vergessen. Die Lösung dieses Problems mit iostream's
cout
kann folgendermaßen erfolgen:
statt es in einen anderen Typ zurückzugeben, wenn cout
den Wert unsigned char
im Gegensatz zum Zeichen ascii
drucken soll. Sie müssen promote
es.
Wenn Sie bemerkt haben, dass alles, was ich getan habe, ein +
vor dem unsigned char
hinzugefügt hat. Dies ist ein unärer Zusatz, der das unsigned char
fördert, um Ihnen die tatsächliche Zahlendarstellung zu geben.
Der Benutzer Baum mit Augen ist dafür verantwortlich, mich an diese Lösung zu erinnern.