Comment convertir Int en ASCII Char en C++
- Utilisation de l’affectation Int to Char pour convertir Int en ASCII Char
-
Utilisez la fonction
sprintf()
pour convertir Int en ASCII Char
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;
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 FacebookArticle connexe - C++ Integer
- Comparaison entre les expressions entières signées et non signées en C++
- Compter le nombre de chiffres dans un nombre en C++
- Expressions de macro INT_MAX et INT_MIN en C++
- Vérifier si un nombre est premier en C++
- Vérifiez si l'entrée est un entier en C++
- Comment analyser une chaîne de caractères en C++