Comment convertir Int en ASCII Char en C++

Jinku Hu 12 octobre 2023
  1. Utilisation de l’affectation Int to Char pour convertir Int en ASCII Char
  2. Utilisez la fonction sprintf() pour convertir Int en ASCII Char
Comment convertir Int en ASCII Char en C++

Cet article explique plusieurs méthodes de conversion de l’int en ASCII char C++.

Utilisation de l’affectation Int to Char pour convertir Int en ASCII Char

Le codage des caractères ASCII est spécifié dans un format de 7 bits. Il y a donc 128 caractères uniques, chacun correspondant à une valeur numérique de 0 à 127.

Comme le langage de programmation C a implémenté les types de char comme des nombres sous le capot, nous pouvons assigner une variable int à une variable de type char et la traiter comme le caractère ASCII correspondant. Par exemple, nous poussons directement les valeurs du vecteur int vers le vecteur char et les affichons ensuite en utilisant la méthode std::copy, en affichant les caractères ASCII comme prévu.

Notez que l’affectation au type char ne fonctionne que lorsque la valeur int correspond à un code ASCII, c’est-à-dire se situe dans la plage 0-127.

#include <array>
#include <iostream>
#include <iterator>
#include <vector>

using std::array;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<int> numbers{97, 98, 99, 100, 101, 102, 103};
  vector<char> chars{};

  std::copy(numbers.begin(), numbers.end(),
            std::ostream_iterator<int>(cout, "; "));

  chars.reserve(numbers.size());
  for (auto &number : numbers) {
    chars.push_back(number);
  }
  cout << endl;
  std::copy(chars.begin(), chars.end(),
            std::ostream_iterator<char>(cout, "; "));

  return EXIT_SUCCESS;
}

Production:

97; 98; 99; 100; 101; 102; 103;
a; b; c; d; e; f; g;

Alternativement, nous pouvons directement sortir les valeurs int en tant que caractères ASCII en utilisant la fonction printf. La fonction printf prend le format spécifié pour l’argument de type correspondant comme indiqué dans le tableau suivant.

Spécificateur de format Description
% Imprime un caractère littéral % (ce type n’accepte pas les champs “drapeau”, “largeur”, “précision”, “longueur”).
d, i int comme un entier signé. %d et %i sont synonymes pour la sortie, mais sont différents lorsqu’ils sont utilisés avec scanf pour l’entrée (où l’utilisation de %i interprétera un nombre comme hexadécimal s’il est précédé de 0x, et octal s’il est précédé de 0).
u Imprimer en décimales non signées int.
f, F double en notation normale (point fixe). f et F diffèrent seulement dans la façon dont les chaînes de caractères d’un nombre infini ou NaN sont imprimées (inf, infini et nan pour f ; INF, INFINITY et NAN pour F).
e, E double valeur sous forme standard (d.ddde±dd). Une conversion E utilise la lettre E (plutôt que e) pour introduire l’exposant.
g, G double en notation normale ou exponentielle, selon ce qui est le plus approprié pour sa magnitude. g utilise des minuscules, G des majuscules.
x, X unsigned int comme nombre hexadécimal. x utilise des minuscules et X des majuscules.
o non signé int in octal.
s chaîne de caractères à terminaison nulle.
c char (caractère).
p (pointeur vers le vide) dans un format défini par l’implémentation.
a, A double en notation hexadécimale, commençant par 0x ou 0X. a utilise des lettres minuscules, A des lettres majuscules.
n N’imprime rien, mais écrit le nombre de caractères écrits avec succès jusqu’à présent dans un paramètre de pointeur d’entier.
#include <array>
#include <charconv>
#include <iostream>
#include <iterator>
#include <vector>

using std::array;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<int> numbers{97, 98, 99, 100, 101, 102, 103};
  vector<char> chars{};

  for (const auto &number : numbers) {
    printf("%c; ", number);
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Production:

a; b; c; d; e; f; g;

Utilisez la fonction sprintf() pour convertir Int en ASCII Char

La fonction sprintf est une autre méthode pour convertir les valeurs int en caractères. Nous devons déclarer une variable char pour contenir la valeur convertie. Cette variable est passée comme premier argument à sprintf et le troisième paramètre spécifie le nombre à traiter. Enfin, vous devez fournir un des spécificateurs de format comme avec printf, il indique le type vers lequel la valeur sera convertie.

#include <array>
#include <charconv>
#include <iostream>
#include <iterator>
#include <vector>

using std::array;
using std::copy;
using std::cout;
using std::endl;
using std::to_chars;
using std::vector;

int main() {
  vector<int> numbers{97, 98, 99, 100, 101, 102, 103};

  array<char, 5> char_arr{};
  for (auto &number : numbers) {
    sprintf(char_arr.data(), "%c", number);
    printf("%s; ", char_arr.data());
  }
  cout << endl;

  return EXIT_SUCCESS;
}
a; b; c; d; e; f; g;
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++ Integer