Comment convertir un tableau de caractères en Int en C++

Jinku Hu 12 octobre 2023
  1. Utilisez la fonction std::strtol pour convertir un tableau de caractères en un tableau de type int
  2. Utilisez la fonction sscanf() pour convertir un tableau de caractères en un tableau Int
Comment convertir un tableau de caractères en Int en C++

Cet article présente les méthodes C++ permettant de convertir un tableau char en un type int.

Utilisez la fonction std::strtol pour convertir un tableau de caractères en un tableau de type int

La méthode strtol interprète les premiers caractères valides du tableau char vers un type d’entier. La fonction prend la base numérique de l’entier converti comme troisième paramètre, avec une valeur comprise entre - {0,2,3,…,36}. Le deuxième paramètre est du type char **endptr, qui est optionnel, et s’il est passé, il stocke l’adresse pointée sur le caractère après le dernier caractère interprété.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  string str1("23323experimental_string");

  auto str1_n = std::strtol(str1.data(), nullptr, 10);
  printf("%ld", str1_n);

  return EXIT_SUCCESS;
}

Production:

23323

L’exemple suivant démontre la fonction strtol avec le second paramètre étant non-nullptr. Notez que nous utilisons la fonction printf uniquement comme outil de vérification de type, et vous devriez utiliser cout dans tous les autres cas. Il est également important d’implémenter des routines de traitement des erreurs pour la fonction strtol dont les détails peuvent être consultés ici.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  string str1("23323experimental_string");
  char *char_part = nullptr;

  auto str1_n = std::strtol(str1.data(), &char_part, 10);
  printf("%ld\n", str1_n);
  printf("%s\n", char_part);
  ;

  return EXIT_SUCCESS;
}

Production:

23323
experimental_string

Utilisez la fonction sscanf() pour convertir un tableau de caractères en un tableau Int

La fonction sscanf lit les données du tampon de la chaîne de caractères et les interprète en fonction du spécificateur de format, qui est passé comme deuxième paramètre. La valeur numérique est stockée au niveau du pointeur de la variable int. Les spécificateurs de format sont détaillés dans le manuel sscanf page:

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  string str1("23323experimental_string");

  int str1_n;
  sscanf(str1.data(), "%d", &str1_n);
  printf("%d\n", str1_n);

  return EXIT_SUCCESS;
}

Production:

23323

Nous pouvons également réimplémenter l’exemple ci-dessus pour stocker la partie non numérique de la chaîne d’entrée. Dans ce cas, nous ajoutons le spécificateur de format %s au deuxième argument et nous passons le pointeur de destination char comme quatrième argument. Notez que sscanf est une fonction variadique car elle peut prendre un nombre variable d’arguments d’un appelant.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  string str1("23323experimental_string");

  int str1_n3;
  string str2{};
  sscanf(str1.data(), "%d%s", &str1_n3, str2.data());
  printf("%d\n", str1_n3);
  printf("%s\n", str2.data());

  return EXIT_SUCCESS;
}

Production:

23323
experimental_string
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