Wie konvertiert man ein Char-Array nach Int in C++
-
Verwenden Sie die Funktion
std::strtol
, um einchar
-Array in ein Int zu konvertieren -
Verwenden Sie die Funktion
sscanf()
, um ein Char-Array in ein Int zu konvertieren
Dieser Artikel stellt C++-Methoden vor, um ein char
-Array in einen int
-Typ zu konvertieren.
Verwenden Sie die Funktion std::strtol
, um ein char
-Array in ein Int zu konvertieren
Die strtol
Methode interpretiert die ersten gültigen Zeichen von char
Array zu einem Integer-Typ. Die Funktion nimmt die Zahlenbasis für die konvertierte Ganzzahl als dritten Parameter, mit einem Wert aus dem Bereich - {0,2,3,…,36}. Der zweite Parameter ist vom Typ char **endptr
, der optional ist, und wenn er übergeben wird, speichert er die Adresse, die auf das Zeichen hinter dem letzten interpretierten Zeichen zeigt.
#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;
}
Ausgabe:
23323
Das folgende Beispiel demonstriert die Funktion strtol
, wobei der zweite Parameter vom Typ nullptr
ist. Beachten Sie, daß wir die Funktion printf
nur als Werkzeug zur Typüberprüfung verwenden, und Sie sollten in allen anderen Fällen cout
verwenden. Es ist auch wichtig, Fehlerbehandlungsroutinen für strtol
zu implementieren, deren Einzelheiten hier eingesehen werden können.
#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;
}
Ausgabe:
23323
experimental_string
Verwenden Sie die Funktion sscanf()
, um ein Char-Array in ein Int zu konvertieren
Die Funktion sscanf
liest die Eingabe aus dem Zeichenkettenpuffer und interpretiert sie entsprechend der Formatangabe, die als zweiter Parameter übergeben wird. Der numerische Wert wird am Zeiger auf die int
-Variable gespeichert. Format-Spezifizierer sind ausführlich im sscanf
-Handbuch Seite beschrieben:
#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;
}
Ausgabe:
23323
Wir können das obige Beispiel auch reimplementieren, um den nicht-numerischen Teil der Eingabezeichenkette zu speichern. In diesem Fall fügen wir dem zweiten Argument die Formatangabe %s
hinzu und übergeben den Zielzeiger char
als viertes Argument. Beachten Sie, dass sscanf
eine variadische Funktion ist, da sie eine variable Anzahl von Argumenten von einem Aufrufer annehmen kann.
#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;
}
Ausgabe:
23323
experimental_string
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