cout ne parvient pas à imprimer des caractères non signés : résoudre le problème
En C , le problème de cout qui n'imprime pas de caractères non signés est souvent rencontré. Pour comprendre cela, analysons l'exemple de code fourni :
#include<iostream> #include<stdio.h> using namespace std; main() { unsigned char a; a = 1; printf("%d", a); cout << a; }
Dans ce code, la variable char non signée a reçoit la valeur 1. Lors de l'impression de a à l'aide de printf, le résultat est "1". Cependant, la sortie utilisant cout << a affiche un caractère apparemment aléatoire.
La raison de cette différence est que un caractère non signé peut stocker des valeurs de 0 à 255. Lorsque a vaut 1, il correspond au caractère ASCII non imprimable 'SOH' (début de titre). printf gère les caractères non imprimables différemment de cout.
Pour déterminer si un caractère est imprimable, utilisez la fonction std::isprint :
std::cout << std::isprint(a) << std::endl;
Cela affichera "0", indiquant que 'SOH' n'est pas imprimable.
Pour forcer cout à imprimer 1, convertissez a en un non signé entier :
cout << static_cast<unsigned>(a) << std::endl;
Cela imprimera avec succès "1."
Comprendre la différence fondamentale entre printf et cout dans la gestion des caractères non imprimables est crucial pour résoudre ce problème. De plus, std::isprint peut aider à déterminer si un caractère doit être imprimé sous une forme lisible par l'homme.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!