convertir une string en sa valeur decimal en code ascii ?
3 réponses
dnanar
Bonjour,
j' ai une question simple: comment convertir un caractère appartenant à
une std::string en une variable de type int contenant le code du
caractère en ASCII ? Ou du moins, existe une fonction prefaite en C++ ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Etienne Rousee
"dnanar" a écrit ...
Bonjour,
j' ai une question simple: comment convertir un caractère appartenant à une std::string en une variable de type int contenant le code du caractère en ASCII ? Ou du moins, existe une fonction prefaite en C++ ?
string chaine = "123456"; int entier;
entier = chaine[2]; // par exemple
//et on a 51 dans entier.
Plus clairement, un caractère ou son code ASCII, pour le C++ (et pour le C), c'est la même chose. Seul l'humain voit une différence.
--
Etienne
"dnanar" <dnanar@gmail.com> a écrit ...
Bonjour,
j' ai une question simple: comment convertir un caractère appartenant à
une std::string en une variable de type int contenant le code du
caractère en ASCII ? Ou du moins, existe une fonction prefaite en C++ ?
string chaine = "123456";
int entier;
entier = chaine[2]; // par exemple
//et on a 51 dans entier.
Plus clairement, un caractère ou son code ASCII, pour le C++ (et pour le C),
c'est la même chose. Seul l'humain voit une différence.
j' ai une question simple: comment convertir un caractère appartenant à une std::string en une variable de type int contenant le code du caractère en ASCII ? Ou du moins, existe une fonction prefaite en C++ ?
string chaine = "123456"; int entier;
entier = chaine[2]; // par exemple
//et on a 51 dans entier.
Plus clairement, un caractère ou son code ASCII, pour le C++ (et pour le C), c'est la même chose. Seul l'humain voit une différence.
--
Etienne
dnanar
string chaine = "123456"; int entier;
entier = chaine[2]; // par exemple
//et on a 51 dans entier.
Plus clairement, un caractère ou son code ASCII, pour le C++ (et pour le C), c'est la même chose. Seul l'humain voit une différence.
Ok, merci pour cette reponse claire et precise :)
string chaine = "123456";
int entier;
entier = chaine[2]; // par exemple
//et on a 51 dans entier.
Plus clairement, un caractère ou son code ASCII, pour le C++ (et pour le C),
c'est la même chose. Seul l'humain voit une différence.
Plus clairement, un caractère ou son code ASCII, pour le C++ (et pour le C), c'est la même chose. Seul l'humain voit une différence.
Ok, merci pour cette reponse claire et precise :)
James Kanze
Etienne Rousee wrote:
"dnanar" a écrit ...
j' ai une question simple: comment convertir un caractère appartenant à une std::string en une variable de type int contenant le code du caractère en ASCII ? Ou du moins, existe une fonction prefaite en C++ ?
string chaine = "123456"; int entier;
entier = chaine[2]; // par exemple
//et on a 51 dans entier.
Attention quand même. Ce qu'on a est le code machine -- si c'est souvent un code à base d'ASCII (parce que l'ASCII pûr est devenu rarissime), ce n'est pas garantie -- les gros IBM, par exemple, continue à se servir d'EBCDIC, où l'encodage du caractère '3' est 243, et non 51.
Aussi, et ce qui risque d'être d'avantage un problème (au moins de travailler sur des mainframes), c'est que ceci ne marche que pour les caractères de base du langage. Pour les autres, bien trop souvent, on se trouvera avec une valeur négative. En général, quand on passe de char à int, il vaut mieux passer par un unsigned char entre les deux :
On est toujours à la merci de l'encodage du système, mais au moins, on a la valeur du caractère dans cet encodage (à condition qu'il ne se sert que des codes simple -- en France, la seule exception courante, c'est du UTF-8, je crois).
Plus clairement, un caractère ou son code ASCII, pour le C++ (et pour le C), c'est la même chose. Seul l'humain voit une différence.
Plus précisement, le C et le C++ n'ont pas vraiment le concepte du caractère -- les types char, unsigned char et signed char sont en fait des petits entiers. Ensuite, c'est l'interprétation qu'on donne à ces entiers qui fait la différence. L'ASCII n'est pas garanti, et c'est même devenu extrèmement rare -- dans la pratique, en dehors des mainframes (et probablement aussi encore en orient), on a soit un encodage ISO 8859-n (avec n soit 1 soit 15 en France), soit UTF-8. Et donc, dans tous les cas, les valeurs de 0 à 127 qui correspondent à l'encodage ASCII.
-- James Kanze Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Etienne Rousee wrote:
"dnanar" <dnanar@gmail.com> a écrit ...
j' ai une question simple: comment convertir un caractère
appartenant à une std::string en une variable de type int
contenant le code du caractère en ASCII ? Ou du moins, existe
une fonction prefaite en C++ ?
string chaine = "123456";
int entier;
entier = chaine[2]; // par exemple
//et on a 51 dans entier.
Attention quand même. Ce qu'on a est le code machine -- si c'est
souvent un code à base d'ASCII (parce que l'ASCII pûr est devenu
rarissime), ce n'est pas garantie -- les gros IBM, par exemple,
continue à se servir d'EBCDIC, où l'encodage du caractère '3'
est 243, et non 51.
Aussi, et ce qui risque d'être d'avantage un problème (au moins
de travailler sur des mainframes), c'est que ceci ne marche que
pour les caractères de base du langage. Pour les autres, bien
trop souvent, on se trouvera avec une valeur négative. En
général, quand on passe de char à int, il vaut mieux passer par
un unsigned char entre les deux :
On est toujours à la merci de l'encodage du système, mais au
moins, on a la valeur du caractère dans cet encodage (à
condition qu'il ne se sert que des codes simple -- en France, la
seule exception courante, c'est du UTF-8, je crois).
Plus clairement, un caractère ou son code ASCII, pour le C++
(et pour le C), c'est la même chose. Seul l'humain voit une
différence.
Plus précisement, le C et le C++ n'ont pas vraiment le concepte
du caractère -- les types char, unsigned char et signed char
sont en fait des petits entiers. Ensuite, c'est l'interprétation
qu'on donne à ces entiers qui fait la différence. L'ASCII n'est
pas garanti, et c'est même devenu extrèmement rare -- dans la
pratique, en dehors des mainframes (et probablement aussi encore
en orient), on a soit un encodage ISO 8859-n (avec n soit 1 soit
15 en France), soit UTF-8. Et donc, dans tous les cas, les
valeurs de 0 à 127 qui correspondent à l'encodage ASCII.
--
James Kanze kanze.james@neuf.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
j' ai une question simple: comment convertir un caractère appartenant à une std::string en une variable de type int contenant le code du caractère en ASCII ? Ou du moins, existe une fonction prefaite en C++ ?
string chaine = "123456"; int entier;
entier = chaine[2]; // par exemple
//et on a 51 dans entier.
Attention quand même. Ce qu'on a est le code machine -- si c'est souvent un code à base d'ASCII (parce que l'ASCII pûr est devenu rarissime), ce n'est pas garantie -- les gros IBM, par exemple, continue à se servir d'EBCDIC, où l'encodage du caractère '3' est 243, et non 51.
Aussi, et ce qui risque d'être d'avantage un problème (au moins de travailler sur des mainframes), c'est que ceci ne marche que pour les caractères de base du langage. Pour les autres, bien trop souvent, on se trouvera avec une valeur négative. En général, quand on passe de char à int, il vaut mieux passer par un unsigned char entre les deux :
On est toujours à la merci de l'encodage du système, mais au moins, on a la valeur du caractère dans cet encodage (à condition qu'il ne se sert que des codes simple -- en France, la seule exception courante, c'est du UTF-8, je crois).
Plus clairement, un caractère ou son code ASCII, pour le C++ (et pour le C), c'est la même chose. Seul l'humain voit une différence.
Plus précisement, le C et le C++ n'ont pas vraiment le concepte du caractère -- les types char, unsigned char et signed char sont en fait des petits entiers. Ensuite, c'est l'interprétation qu'on donne à ces entiers qui fait la différence. L'ASCII n'est pas garanti, et c'est même devenu extrèmement rare -- dans la pratique, en dehors des mainframes (et probablement aussi encore en orient), on a soit un encodage ISO 8859-n (avec n soit 1 soit 15 en France), soit UTF-8. Et donc, dans tous les cas, les valeurs de 0 à 127 qui correspondent à l'encodage ASCII.
-- James Kanze Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34