Wie konvertiert man ein Char-Array nach Int in C++

Jinku Hu 12 Oktober 2023
  1. Verwenden Sie die Funktion std::strtol, um ein char-Array in ein Int zu konvertieren
  2. Verwenden Sie die Funktion sscanf(), um ein Char-Array in ein Int zu konvertieren
Wie konvertiert man ein Char-Array nach Int in C++

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
Autor: 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

Verwandter Artikel - C++ Char