Obtenir la valeur ASCII de Char en C++
-
Utilisez
std::copy
etstd::ostream_iterator
pour obtenir la valeur ASCII dechar
-
Utilisez les spécificateurs de format
printf
pour obtenir la valeur ASCII dechar
-
Utilisez
int()
pour obtenir la valeur ASCII dechar
Cet article explique plusieurs méthodes pour obtenir la valeur ASCII de char
en C++.
Utilisez std::copy
et std::ostream_iterator
pour obtenir la valeur ASCII de char
Le codage de caractères ASCII est presque omniprésent dans les ordinateurs, même si de nouveaux schémas standard ont vu le jour depuis, comme UTF-8 et d’autres. À l’origine, les lettres anglaises encodées en ASCII, les chiffres décimaux, les symboles de ponctuation et certains codes de contrôle supplémentaires. Tous ces symboles sont représentés en utilisant une valeur entière de la plage [0 - 127]
. Puisque les types char
sont implémentés comme des entiers, nous pouvons traiter ses valeurs et les sortir dans le flux cout
en utilisant les algorithmes ostream_iterator<int>
et std::copy
. Notez que les lettres de l’alphabet qui en résultent ont des valeurs numériques voisines.
#include <iostream>
#include <iterator>
#include <vector>
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<char> chars{'g', 'h', 'T', 'U', 'q', '%', '+', '!', '1', '2', '3'};
cout << "chars: ";
std::copy(chars.begin(), chars.end(), std::ostream_iterator<int>(cout, "; "));
return EXIT_SUCCESS;
}
Production:
chars: 103; 104; 84; 85; 113; 37; 43; 33; 49; 50; 51;
Utilisez les spécificateurs de format printf
pour obtenir la valeur ASCII de char
La fonction printf
est une autre alternative pour sortir les valeurs char
avec les codes ASCII correspondants. Notez que printf
prend les deux arguments comme des types char
et ne différencie que les spécificateurs de format %c
/%d
. Même si ces derniers spécificateurs sont généralement documentés comme formateurs char
et int
, respectivement, ils sont compatibles les uns avec les autres.
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<char> chars{'g', 'h', 'T', 'U', 'q', '%', '+', '!', '1', '2', '3'};
cout << endl;
for (const auto &number : chars) {
printf("The ASCII value of '%c' is: %d\n", number, number);
}
return EXIT_SUCCESS;
}
Production:
The ASCII value of 'g' is: 103
The ASCII value of 'h' is: 104
The ASCII value of 'T' is: 84
The ASCII value of 'U' is: 85
The ASCII value of 'q' is: 113
The ASCII value of '%' is: 37
The ASCII value of '+' is: 43
The ASCII value of '!' is: 33
The ASCII value of '1' is: 49
The ASCII value of '2' is: 50
The ASCII value of '3' is: 51
Utilisez int()
pour obtenir la valeur ASCII de char
Enfin, on peut convertir les valeurs char
en utilisant la notation int(c)
et sortir les valeurs directement dans le flux cout
comme n’importe quelle autre variable. Notez que cet exemple est plus de style C++ que la version printf
avec ses spécificateurs de format. En revanche, les valeurs des caractères ASCII peuvent être imprimées à partir des valeurs int
en utilisant la notation char(i)
.
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<char> chars{'g', 'h', 'T', 'U', 'q', '%', '+', '!', '1', '2', '3'};
cout << endl;
for (auto &number : chars) {
cout << "The ASCII value of '" << number << "' is: " << int(number) << endl;
}
return EXIT_SUCCESS;
}
Production:
The ASCII value of 'g' is: 103
The ASCII value of 'h' is: 104
The ASCII value of 'T' is: 84
The ASCII value of 'U' is: 85
The ASCII value of 'q' is: 113
The ASCII value of '%' is: 37
The ASCII value of '+' is: 43
The ASCII value of '!' is: 33
The ASCII value of '1' is: 49
The ASCII value of '2' is: 50
The ASCII value of '3' is: 51
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook