Obtenir la valeur ASCII de Char en C++

Jinku Hu 12 octobre 2023
  1. Utilisez std::copy et std::ostream_iterator pour obtenir la valeur ASCII de char
  2. Utilisez les spécificateurs de format printf pour obtenir la valeur ASCII de char
  3. Utilisez int() pour obtenir la valeur ASCII de char
Obtenir la valeur ASCII de Char en C++

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
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Article connexe - C++ Char