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); // 255stol stoll stoul stoull
Variantes pour les autres types entiers :
std::stol— longstd::stoll— long longstd::stoul— unsigned longstd::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
- std::string ou tableaux de caractères à la manière C
- Opérations sur les chaînes : concaténation, sous-chaînes, recherche et remplacement
- Flux de chaînes stringstream pour l’analyse
- Conversions de chaînes : to_string et stoi