0Pricing
C++ Academy · Leçon

Conversions de chaînes : to_string et stoi

Convertissez en toute sécurité des chaînes en types numériques et inversement avec std::to_string, std::stoi et std::stod.

Conversions de chaînes : to_string et stoi est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C++ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C++ Academy comprend 4 leçons au total.

Pourquoi les conversions de chaînes sont importantes

Vous devez constamment convertir des nombres en texte et inversement — pour la saisie utilisateur, les fichiers de configuration, JSON, les URL et les journaux.

std::to_string

std::to_string convertit n'importe quel type numérique intégré en chaîne. Il utilise le formatage par défaut.

#include <string>

std::string a = std::to_string(42);     // "42"
std::string b = std::to_string(-7);     // "-7"
std::string c = std::to_string(3.14);   // "3.140000"

Formatage par défaut des nombres flottants

to_string appliqué à un double utilise six décimales. Pour contrôler précisément le résultat, utilisez std::stringstream avec std::fixed et std::setprecision, ou std::format en C++20.

std::stoi : chaîne vers int

Analysez un entier avec std::stoi. Les espaces en début de chaîne sont ignorés et l'analyse s'arrête au premier caractère qui n'est pas un chiffre.

int n = std::stoi("42");        // 42
int m = std::stoi("  -7abc");   // -7 (stops at 'a')

Lire la position de fin

Transmettez un pointeur pour recevoir l'indice où l'analyse s'est arrêtée — ce qui est utile pour analyser des chaînes mixtes.

std::string s = "42px";
size_t pos;
int n = std::stoi(s, &pos);
std::cout << pos;  // 2  (parsed "42", stopped at 'p')

Stoi lève une exception en cas d'entrée incorrecte

Si aucun chiffre n'est trouvé, stoi lève std::invalid_argument. Si le nombre dépasse la plage autorisée, il lève std::out_of_range.

try {
    int x = std::stoi("not_a_number");
} catch (const std::invalid_argument& e) {
    std::cout << "Parse failed";
}

Conversions de base

Le troisième argument sélectionne la base (de 2 à 36). Transmettez 0 pour détecter automatiquement la base à partir du préfixe.

int hex = std::stoi("ff", nullptr, 16);    // 255
int bin = std::stoi("1010", nullptr, 2);   // 10
int auto_detect = std::stoi("0xff", nullptr, 0); // 255

stol stoll stoul stoull

Variantes pour les autres types entiers :

  • std::stol — long
  • std::stoll — long long
  • std::stoul — unsigned long
  • std::stoull — unsigned long long

stof stod stold

Variantes pour les nombres à virgule flottante : float, double et long double.

double d = std::stod("3.14159");
float f = std::stof("2.71");

C++17 std::from_chars : aucune exception

std::from_chars analyse les valeurs sans lever d'exception. Il renvoie une structure contenant ec (le code d'erreur) et ptr (la position de fin de l'analyse) — à privilégier dans les boucles très sollicitées.

#include <charconv>
std::string s = "42";
int val;
auto result = std::from_chars(s.data(), s.data() + s.size(), val);
if (result.ec == std::errc{}) {
    // success
}

C++17 std::to_chars : aucune allocation

C'est l'opposé de from_chars : écrivez un nombre dans un tampon sans effectuer d'allocation. Il s'agit de la conversion la plus rapide disponible dans la bibliothèque standard.

Vérification rapide

Quelle exception std::stoi("abc") lève-t-il ?

Récapitulatif

std::to_string convertit les nombres en chaînes ; std::stoi et les fonctions similaires convertissent les chaînes en nombres. Les deux lèvent une exception en cas d'échec — utilisez std::from_chars pour une analyse performante et sans exception.

Questions Fréquemment Posées

La leçon « Conversions de chaînes : to_string et stoi » est-elle gratuite ?

Oui — le texte complet de « Conversions de chaînes : to_string et stoi » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C++ Academy, passe à CoddyKit PRO. Le cours C++ Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Conversions de chaînes : to_string et stoi » ?

Convertissez en toute sécurité des chaînes en types numériques et inversement avec std::to_string, std::stoi et std::stod. Tu pratiques C++ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C++ Academy ?

Aucune expérience préalable n'est requise. C++ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Conversions de chaînes : to_string et stoi » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C++ Academy ?

Oui. Chaque leçon C++ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. std::string ou tableaux de caractères à la manière C
  2. Opérations sur les chaînes : concaténation, sous-chaînes, recherche et remplacement
  3. Flux de chaînes stringstream pour l’analyse
  4. Conversions de chaînes : to_string et stoi
← Retour à C++ Academy