Je dois imprimer sur la sortie standard quelques valeurs std::uint16_t
comme hexadécimal avec le formatage de texte suivant: 0x##
. J'ai trouvé ce code en ligne qui fonctionne très bien pour chaque valeur, sauf 0
:std :: cout de l'hexadécimal 0x00
std::cout << std::internal
<< std::setfill('0')
<< std::hex
<< std::showbase
<< std::setw(4)
<< value << std::endl;
Pour une raison que je ne comprends pas, 0
est imprimé comme 0000
. Toutes les autres valeurs sont correctement imprimées comme prévu.
Comme on le voit dans la ([section Notes ici] http://en.cppreference.com/w/cpp/io/manip/showbase #Notes), c'était un choix délibéré. Comment le contourner? Pas sûr, j'en ai peur, je n'en ai jamais eu besoin. Il semble que vous deviez créer votre propre ['num_put'] (http://en.cppreference.com/w/cpp/locale/num_put), ce qui est pénible pour les proverbiaux. – BoBTFish
_Une question par question s'il vous plaît._ –
Je suis assez sûr qu'un programmeur a conçu ce système ("Le zéro est le même dans chaque base, quel est le problème?"). Je pense que ... << "0x" << setw (2) << ... 'devrait fonctionner. – molbdnilo