Equivalent de chr(x) dans d'autres languages

Messages postés
30
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
5 mars 2011
-
Messages postés
30
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
5 mars 2011
-
Bonjour,

Je suis a la recherche de l'equivalent de chr(x) et eventuellement l'inverse Asc("caractere")

en C++
utilisation du code ascii.

donc:
on a par exemple le nombre 65 chr(65) donne en réponse A
ou Asc("C") donne en réponse 67

Merci

8 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Il faut se laver le cerveau des faux concepts des pseudo langages.

char buf[] = "ABC";

buf[0] vaut 65, il n'y a aucun besoin de fonction à la noix.

ciao...
BruNews, MVP VC++
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
125
Ce que veut dire Brunews, c'est qu'un caractère est un chiffre.
En interne, c'est la même chose, c'est juste la manière dont tu le formates qui change.
Les fonctions de pseudos conversions sont donc inutiles et trompeuses.

Exemple:

#include <stdio.h>

int main()
{
  printf("%c\n", 65); // A
  printf("%i\n", 65); // 65
  printf("%c\n", 'A'); // A
  printf("%i\n", 'A'); // 65

  return 0;
}


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
30
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
5 mars 2011

Bonjour,

merci je vais essayer d'appliquer celà

(mettre dans une chaine et concatener).

A ++
Messages postés
30
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
5 mars 2011

Bonjour,

Bon, la demo fonctionne mais je ne parviens pas a ce que je desire faire!

en fait,pour faire simple, au départ, j'ai besoin d'initialiser une variable chaine de caractere dont je ne connais pas la longueur:
vide où contenant un texte par exemple: "mot 1; "

au cours du deroulement programme, elle devrait s'allonger mais d'un nombre de caracteres inconnu.

donc un truc du genre:
chaine = chaine + ("%c\n", x+64) + ("%c\n", y+64)+ ("%c\n", z+64)+ "; " ; //x y et z étant des nombres

je ne parviens pas a déclarer cette variable et encore moins a concatener le reste.

Merci
Messages postés
30
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
5 mars 2011

Bonjour,

je ne parviens pas a éditer le message précédent.

pour être plus clair (je l'espere):je fais (en test)

dans l'exemple ci dessous, je desirerais remplacer dans:

chaine = chaine +"a" ;
le + "a" par la lecaractere representé par la valeur de i dans la boucle
je devrais obtenir ABCDEF...XYZ

#include <cstdlib>
#include
#include <string>
#include <stdio.h>

using namespace std;

int main(void)
{
int i;
string chaine = "";
cout << "Début de la boucle:\n";

for(i = 65; i <= 90; i++)

chaine = chaine +"a" ;// je voudrais la valeur de string (i) ;
//cout << "lettre = " << ("%c\n", i+64) << endl;

//printf("%c\n", 65); // A
//printf("%i\n", 65); // 65
//printf("%c\n", 'A'); // A
//printf("%i\n", 'A'); // 65



cout << "la chaine contient : " << chaine << endl;
cout << "Fin de la boucle!\n";


system("PAUSE");
return EXIT_SUCCESS;
}
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
125
Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace

Pour toute concaténation, tu as la classe std::ostringstream.

std::ostringstream buff;
for(char c = 'A'; i <= 'Z'; ++c)
  buff << c;
std::cout << buff.str() << std::endl;


A noter que si tu connais la taille exacte de ta chaîne, tu peux aussi faire (en C):

char tab['Z' - 'A' + 1];
for (int i = 0; i < 'Z' - 'A'; ++i)
  tab[i] = 'A' + i; 
tab['Z' - 'A'] = 0;

printf("%s\n", tab);


PS: Je n'ai rien testé, mais tu as le principe.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
30
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
5 mars 2011

Bonjour,

je n'ai pas trop compris.

En fait, je ne vaux pas obtenir une chaine de A à Z ('ai fait une boucle pour l'exemple) mais une chaine dont les lettres dependront d'un résultat:

exemple, si I vaut 5 et J vaut 12, la chaine sera "EL".
Messages postés
30
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
5 mars 2011

Bonsoir,

problème résolu

bien sur gace a vos interventions et un peu d'acharnement
en fait, je pensais que la fonction exiqtait dans une quelconque bibliotheque

voila le resultat de ma demande qui fonctionne (peut être pas élégante si mieus mefaire signe).

#include <cstdlib>
#include
#include <string>
#include <stdio.h>

using namespace std;

//int main(void, int argc, char *argv[])

int main(void)
{
string chaine = "test ";

//Code C/C++ :
// faire une "fonction" chr(x)
// je crée un tableau
char chr[27]; // taille du tableau
for (int i = 0; i <= 26 ; ++i)// remplisssage du tableau
chr[i] = 64 + i;

// ici je fais le travail que je souhaitais (un exemple)
// si j'ai obtenu les nombres

chaine = chaine + "; " + chr [26] + "; " + chr [5];

cout << "chaine = " << chaine << endl;



system("PAUSE");
return EXIT_SUCCESS;
}

Ca marche merci encore
encore pété 20 neurones