2010-07-28 6 views
1

Je suis nouveau en C++ et j'essaye de faire quelque chose qui devrait être assez basique.comment convertir une valeur entière à un caractère ASCII spécifique en C++

J'ai une petite boucle en C++ qui affiche juste une séquence de nombres et je voudrais convertir ces nombres en caractères ASCII spécifiques. Quelque chose comme ceci:

for (int k = 0; k < 16; k++) { 
     display(65+k); 
    } 

Et le résultat devrait ressembler à ceci:

ABCDEFGH ... etc

Toutes les idées?

Merci!

Répondre

0

Ce serait

#include <iostream> 
int main() { 
for (int k = 0; k < 16; k++) { 
     std::cout.put(65+k); 
    } 
} 

C++

+2

une amélioration serait de remplacer 65 avec 'A' –

+0

Pas vraiment. En fait, nous ne garantissons pas que les codes suivant 'A' sont des lettres. Si cela fonctionnait sur un AS/400, le programme produirait un fichier de charabia pour quiconque le lirait en ASCII. 65 est * correcter * que 'A', mais 'A' est plus agréable aux personnes lâches^H^H^H^H qui n'ont pas mémorisé la table ASCII. –

+0

Luther a raison de dire que cette solution produira des caractères ASCII dans n'importe quel environnement avec des flux larges d'au moins 7 bits (alors que le type C 'char' doit être d'au moins 8 bits, ce qui n'empêche pas une conversion en écriture sur disque ou stdout), que l'environnement utilise ASCII comme format natif ou non. –

2

EDIT sur la clarification en fonction: A en juger par le message d'erreur display prend une chaîne C-style. Vous pouvez en construire un comme ceci:

for (int k = 0; k < 16; k++) { 
    char str[2] = { 65 + k }; // Implicitly add the terminating null. 
    display(str); 
} 
+0

Ceci est une solution incorrecte. L'OP voulait produire des caractères * ASCII *, mais la valeur de 'A' dépend du codage de l'hôte. Si vous compilez cela sur un AS/400 alors il enverra 0xc2 0xc3 0xc4 .. au flux de sortie. –

+0

@Luther L'OP a spécifiquement demandé que le résultat soit des caractères. Je ne comprends pas comment 'std :: cout' sur un tel système ne traduirait pas '' A '+ 1' par exemple en' 'B' 'sur l'affichage, quelle que soit la représentation numérique que l'hôte utilise réellement. –

+0

cout ne sait pas comment faire un 'A' sur votre écran. Il sait seulement comment envoyer des codes de caractères à votre affichage (ou un fichier) et à votre affichage pour interpréter les codes et afficher un «A» pour un code spécifique. Si le programme et l'affichage sont en désaccord sur le code pour 'A' vous avez un problème. –

Questions connexes