J'ai
int i = 6;
et je veux
char c = '6'
par conversion. Un moyen simple de suggérer?
EDIT: J'ai aussi besoin de générer un nombre aléatoire et de le convertir en caractères, puis d'ajouter un '.txt' et d'y accéder via un ifstream.
méthode simple:
char digits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
char aChar = digits[i];
Plus sûr:
char aChar = '0' + i;
manière générique:
itoa(i, ...)
Manière pratique:
sprintf(myString, "%d", i)
façon C++: (tiré de Dave18 answer)
std::ostringstream oss;
oss << 6;
façon patronale
Joe, écris-moi un convertisseur int en caractère
façon Studboss:
char aChar = '6';
à la manière de Joe:
char aChar = '6'; // int i = 6;
à la Nasa:
// En attente de réponse du satellite ...
façon Alien: '9'
//Salutations.
à la manière de Die
Bruh j'ai construit ce
à la manière de Peter Pan:
char aChar;
switch (i)
{
case 0:
aChar = '0';
break;
case 1:
aChar = '1';
break;
case 2:
aChar = '2';
break;
case 3:
aChar = '3';
break;
case 4:
aChar = '4';
break;
case 5:
aChar = '5';
break;
case 6:
aChar = '6';
break;
case 7:
aChar = '7';
break;
case 8:
aChar = '8';
break;
case 9:
aChar = '9';
break;
default:
aChar = '?';
break;
}
façon du Père Noël:
//Wait till Christmas!
sleep(457347347);
façon de la gravité:
//Quoi
façon '6' (Jersey) Mikes '™:
//
SO façon:
Les gars, comment éviter de lire le guide du débutant en C++?
À ma façon:
ou l'autoroute.
Commentaire: J'ai ajouté Handy way et C++ way (pour avoir une collection complète) et je l'enregistre en tant que wiki.
Edit: satisfait?
Cela ne fonctionnera que pour les chiffres int. Compris entre 0 et 9, mais votre question semble suggérer que cela pourrait suffire.
Cela fonctionne en ajoutant la valeur ASCII de char '0'
au chiffre entier.
int i=6;
char c = '0'+i; // now c is '6'
Par exemple:
'0'+0 = '0'
'0'+1 = '1'
'0'+2 = '2'
'0'+3 = '3'
Éditer
Vous ne comprenez pas ce que vous voulez dire par "travail pour les alphabets"? Si vous voulez la 5ème lettre de l'alphabet:
int i=5;
char c = 'A'-1 + i; // c is now 'E', the 5th letter.
Notez que parce que dans C/Ascii, A est considéré comme la ème lettre de l’alphabet, je fais un moins-1 pour compenser le sens normalement compris par la 5ème lettre.
Adaptez-le en fonction de votre situation spécifique.
(et test-test-test! le code que vous écrivez)
Juste pour votre information, si vous voulez plus que des nombres à un chiffre, vous pouvez utiliser sprintf:
char txt[16];
int myNum = 20;
sprintf(txt, "%d", myNum);
Alors le premier chiffre est dans un caractère à txt [0], et ainsi de suite.
(Ceci est l'approche C, pas l'approche C++. La méthode C++ consisterait à utiliser des chaînes de caractères.)
Ma façon de faire ce travail est:
char to int
char var;
cout<<(int)var-48;
int to char
int var;
cout<<(char)(var|48);
Et j'écris ces fonctions pour les conversions
int char2int(char *szBroj){
int counter=0;
int results=0;
while(1){
if(szBroj[counter]=='\0'){
break;
}else{
results*=10;
results+=(int)szBroj[counter]-48;
counter++;
}
}
return results;
}
char * int2char(int iNumber){
int iNumbersCount=0;
int iTmpNum=iNumber;
while(iTmpNum){
iTmpNum/=10;
iNumbersCount++;
}
char *buffer=new char[iNumbersCount+1];
for(int i=iNumbersCount-1;i>=0;i--){
buffer[i]=(char)((iNumber%10)|48);
iNumber/=10;
}
buffer[iNumbersCount]='\0';
return buffer;
}
C’est ainsi que j’ai converti un nombre en ASCII. 0 bien que 9 dans le code hexadécimal soit 0x30-0x39. 6 équivaut à 0x36.
unsigned int temp = 6;
or you can use unsigned char temp = 6;
unsigned char num;
num = 0x30| temp;
cela vous donnera la valeur ASCII pour 6. Vous faites la même chose pour 0 - 9
convertir ASCII en une valeur numérique, je suis venu avec ce code.
unsigned char num,code;
code = 0x39; // ASCII Code for 9 in Hex
num = 0&0F & code;
Manière alternative, mais non standard.
int i = 6;
char c[2];
char *str = NULL;
if (_itoa_s(i, c, 2, 10) == 0)
str = c;
Ou Utilisation de la chaîne de caractères standard c ++
std::ostringstream oss;
oss << 6;
Je suppose que
std::to_string(i)
pourrait faire le travail, c'est une fonction surchargée, je pourrais être n'importe quels types numériques
"J'ai int i = 6; et je veux que char c = '6' par conversion. Un moyen simple de suggérer?"
Il n'y a que 10 numéros. Donc, écrivez une fonction qui prend un int de 0 à 9 et renvoie le code ASCII. Il suffit de regarder dans une table ascii et d'écrire une fonction avec ifs ou un cas de sélection.