Zeichenkettenkonvertierung: to_string und stoi
Konvertieren Sie mit std::to_string, std::stoi und std::stod sicher zwischen Zeichenketten und numerischen Typen
Zeichenkettenkonvertierung: to_string und stoi ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum die Umwandlung von Zeichenketten wichtig ist
Sie müssen ständig zwischen Zahlen und Text umwandeln — etwa für Benutzereingaben, Konfigurationsdateien, JSON, URLs und Protokolle.
std::to_string
std::to_string wandelt jeden integrierten numerischen Typ in eine Zeichenkette um. Dabei wird die Standardformatierung verwendet.
#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"Standardformatierung von Gleitkommazahlen
to_string verwendet bei einem double sechs Nachkommastellen. Für eine präzise Kontrolle verwenden Sie std::stringstream mit std::fixed und std::setprecision oder std::format in C++20.
std::stoi: Zeichenkette in int umwandeln
Analysieren Sie eine Ganzzahl mit std::stoi. Führender Leerraum wird übersprungen, und die Analyse endet beim ersten Zeichen, das keine Ziffer ist.
int n = std::stoi("42"); // 42
int m = std::stoi(" -7abc"); // -7 (stops at 'a')Die Endposition der Analyse auslesen
Übergeben Sie einen Zeiger, um den Index zu erhalten, an dem die Analyse beendet wurde — das ist nützlich, wenn Sie gemischte Zeichenketten analysieren.
std::string s = "42px";
size_t pos;
int n = std::stoi(s, &pos);
std::cout << pos; // 2 (parsed "42", stopped at 'p')Stoi löst bei ungültigen Eingaben Ausnahmen aus
Wenn keine Ziffern gefunden werden, löst stoi std::invalid_argument aus. Wenn die Zahl den Wertebereich überschreitet, wird std::out_of_range ausgelöst.
try {
int x = std::stoi("not_a_number");
} catch (const std::invalid_argument& e) {
std::cout << "Parse failed";
}Zahlensysteme umwandeln
Das dritte Argument legt die Basis fest (2–36). Übergeben Sie 0, um das Zahlensystem automatisch anhand des Präfixes zu erkennen.
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
Varianten für die anderen Ganzzahltypen:
std::stol— longstd::stoll— long longstd::stoul— unsigned longstd::stoull— unsigned long long
stof stod stold
Varianten für Gleitkommazahlen vom Typ float, double und long double.
double d = std::stod("3.14159");
float f = std::stof("2.71");C++17 std::from_chars: Keine Ausnahmen
std::from_chars analysiert Eingaben, ohne Ausnahmen auszulösen. Die Funktion gibt eine Struktur mit ec (Fehlercode) und ptr (Position am Ende der Analyse) zurück — in zeitkritischen Schleifen ist sie die bevorzugte Wahl.
#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: Keine Speicherreservierung
Das Gegenstück zu from_chars: Schreiben Sie eine Zahl in einen Puffer, ohne Speicher zu reservieren. Dies ist die schnellste verfügbare Umwandlung in der Standardbibliothek.
Kurze Überprüfung
Welche Ausnahme löst std::stoi("abc") aus?
Zusammenfassung
std::to_string wandelt Zahlen in Zeichenketten um; std::stoi und verwandte Funktionen analysieren Zeichenketten als Zahlen. Beide lösen bei einem Fehler eine Ausnahme aus — verwenden Sie std::from_chars für eine leistungsstarke Analyse ohne Ausnahmen.
Häufig gestellte Fragen
Ist die Lektion „Zeichenkettenkonvertierung: to_string und stoi“ kostenlos?
Ja — der vollständige Text von „Zeichenkettenkonvertierung: to_string und stoi“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Zeichenkettenkonvertierung: to_string und stoi“?
Konvertieren Sie mit std::to_string, std::stoi und std::stod sicher zwischen Zeichenketten und numerischen Typen Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C++ Academy zu starten?
Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Zeichenkettenkonvertierung: to_string und stoi“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?
Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- std::string und C-Style-Zeichenarrays im Vergleich
- Zeichenkettenoperationen: concat, substr, find, replace
- stringstream zur Textanalyse
- Zeichenkettenkonvertierung: to_string und stoi