2012-02-18 3 views
0

Lorsqu'un tableau est déclaré comme char non signé et initialisé avec des valeurs dans la plage 0x00-0xFF et imprimé à l'aide Cout, je reçois des valeurs de déchets comme suitvaleurs ordures quand tableau déclaré en tant que char non signé

+ ( �   
~ � � � 
    �  O 
    � � < 

Puis-je savoir comment utiliser utiliser un seul octet pour les numéros et encore être en mesure d'utiliser cout?

+0

pouvons-nous voir à la fois le code d'initialisation et le code d'impression? – Lefteris

+0

Vous essayez d'imprimer des caractères non imprimables. –

Répondre

3

Parce qu'il est un unsigned char, std::cout est de les transmettre au terminal et il est d'être affiché comme un jeu de caractères (Eh bien, en essayant, de toute façon - la les valeurs sont en dehors de la plage des caractères imprimables valides pour le jeu de caractères que vous utilisez).

Transmise à unsigned int lors de la sortie avec cout.

1

Ce ne sont pas des valeurs parasites. Ce sont ce que le personnage représente. Pour imprimer comme un int, tout simplement jeté à unsigned int au moment de la sortie:

cout << (unsigned int) some_char; 
2

Les types de car sont affichés en tant que caractères par défaut. Si vous voulez les afficher comme entiers, vous devrez les convertir en premier:

unsigned char value = 42; 
std::cout << static_cast<unsigned int>(value); 
Questions connexes