cout druckt vorzeichenlose Zeichen nicht aus: Lösung des Problems
In C tritt häufig das Problem auf, dass cout vorzeichenlose Zeichen nicht druckt. Um dies zu verstehen, analysieren wir das bereitgestellte Codebeispiel:
#include<iostream> #include<stdio.h> using namespace std; main() { unsigned char a; a = 1; printf("%d", a); cout << a; }
In diesem Code wird der vorzeichenlosen char-Variablen a der Wert 1 zugewiesen. Beim Drucken von a mit printf ist das Ergebnis „1“. Die Ausgabe mit cout << a zeigt ein scheinbar zufälliges Zeichen an.
Der Grund für diese Diskrepanz ist, dass unsigned char Werte von 0 bis 255 speichern kann. Wenn a 1 ist, entspricht es dem nicht druckbaren ASCII-Zeichen „SOH“ (Anfang von). Überschrift). printf behandelt nicht druckbare Zeichen anders als cout.
Um festzustellen, ob ein Zeichen druckbar ist, verwenden Sie die Funktion std::isprint:
std::cout << std::isprint(a) << std::endl;
Dadurch wird „0“ ausgegeben, was darauf hinweist „SOH“ ist nicht druckbar.
Um cout zum Drucken von 1 zu zwingen, wandeln Sie a in ein unsigned um Ganzzahl:
cout << static_cast<unsigned>(a) << std::endl;
Dadurch wird „1“ erfolgreich gedruckt.
Das Verständnis des grundlegenden Unterschieds zwischen printf und cout beim Umgang mit nicht druckbaren Zeichen ist für die Lösung dieses Problems von entscheidender Bedeutung. Darüber hinaus kann std::isprint dabei helfen, zu bestimmen, ob ein Zeichen in einer für Menschen lesbaren Form gedruckt werden soll.
Das obige ist der detaillierte Inhalt vonWarum druckt „cout' vorzeichenlose Zeichen in C nicht korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!