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

Jinku Hu 12 Oktober 2023
  1. Verwendung der Funktion std::sprintf zur Konvertierung von int in char*
  2. Kombination von to_string() und c_str() Methoden zur Umwandlung von int in char*
  3. Verwendung von std::stringstream Klassenmethoden für die Konvertierung
  4. Verwendung der Funktion std::to_chars zur Konvertierung von int in char*
Wie man Int in ein Char-Array in C++ konvertiert

In diesem Artikel wird erklärt, wie man int mit verschiedenen Methoden in ein char array (char*) konvertiert.

In den folgenden Beispielen gehen wir davon aus, die Ausgabe der Konvertierung im Speicherpuffer zu speichern, und zu Überprüfungszwecken werden wir das Ergebnis mit std::printf ausgeben.

Verwendung der Funktion std::sprintf zur Konvertierung von int in char*

Zuerst müssen wir Platz für die Speicherung einer einzelnen int-Variablen, die wir konvertieren wollen, in einem char-Puffer reservieren. Beachten Sie, dass das folgende Beispiel die maximale Länge MAX_DIGITS für ganzzahlige Daten definiert. Um die Länge des Zeichenpuffers zu berechnen, fügen wir sizeof(char) hinzu, weil die Funktion sprintf eine Zeichenkette schreibt, die \0 Byte automatisch am Zielort beendet. Daher sollten wir genügend Platz für diesen Puffer reservieren.

#include <iostream>

#define MAX_DIGITS 10

int main() {
  int number = 1234;
  char num_char[MAX_DIGITS + sizeof(char)];

  std::sprintf(num_char, "%d", number);
  std::printf("num_char: %s \n", num_char);

  return 0;
}

Ausgabe:

num_char: 1234

Beachten Sie, dass der Aufruf von sprintf mit überlappenden Quell- und Zielpuffern (z. B. sprintf(buf, "%s some text to add", buf)) nicht empfohlen wird, da er ein undefiniertes Verhalten hat und je nach Compiler falsche Ergebnisse liefert.

Kombination von to_string() und c_str() Methoden zur Umwandlung von int in char*

Diese Version verwendet für die Konvertierung Methoden der Klasse std::string, was sie zu einer weitaus sichereren Version macht als die Behandlung von sprintf, wie im vorherigen Beispiel gezeigt.

#include <iostream>

int main() {
  int number = 1234;

  std::string tmp = std::to_string(number);
  char const *num_char = tmp.c_str();

  printf("num_char: %s \n", num_char);

  return 0;
}

Verwendung von std::stringstream Klassenmethoden für die Konvertierung

Diese Methode wird mit der Klasse std::stringstream implementiert. Nämlich erzeugen wir einen temporären, auf Zeichenketten basierenden Datenstrom, in dem wir int Daten speichern, dann ein Zeichenkettenobjekt durch die str Methode zurückgeben und schließlich c_str aufrufen, um die Konvertierung durchzuführen.

#include <iostream>
#include <sstream>

int main() {
  int number = 1234;

  std::stringstream tmp;
  tmp << number;

  char const *num_char = tmp.str().c_str();
  printf("num_char: %s \n", num_char);
  ;

  return 0;
}

Verwendung der Funktion std::to_chars zur Konvertierung von int in char*

Diese Version ist eine reine Funktion im C++-Stil, die in C++17 hinzugefügt und in der Kopfzeile <charconv> definiert wurde. Auf der positiven Seite bietet diese Methode Operationen auf Bereiche, was in bestimmten Szenarien die flexibelste Lösung sein könnte.

#include <charconv>
#include <iostream>

#define MAX_DIGITS 10

int main() {
  int number = 1234;
  char num_char[MAX_DIGITS + sizeof(char)];

  std::to_chars(num_char, num_char + MAX_DIGITS, number);
  std::printf("num_char: %s \n", num_char);

  return 0;
}
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++ Integer

Verwandter Artikel - C++ Char