cout druckt kein unsigniertes Zeichen

7

Ich arbeite an untenstehendem Code:

%Vor%

Es druckt 1 und etwas Müll.

Warum verhält sich cout so?

    
Hitesh Menghani 23.03.2013, 09:38
quelle

4 Antworten

24

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:

%Vor%

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:

%Vor%     
Nawaz 23.03.2013 09:42
quelle
3

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.

    
Ganesh 23.03.2013 09:41
quelle
1

Ich hatte ein ähnliches Problem hier , dass ich ' lange vergessen. Die Lösung dieses Problems mit iostream's cout kann folgendermaßen erfolgen:

%Vor%

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.

    
Francis Cugler 29.12.2017 15:22
quelle
-1

printf ("% u", a); Es ist so einfach es versuchen

    
Jagathesan NB 18.05.2016 05:27
quelle

Tags und Links