Wie man Int in ein Char-Array in C++ konvertiert
-
Verwendung der Funktion
std::sprintf
zur Konvertierung vonint
inchar*
-
Kombination von
to_string()
undc_str()
Methoden zur Umwandlung vonint
inchar*
-
Verwendung von
std::stringstream
Klassenmethoden für die Konvertierung -
Verwendung der Funktion
std::to_chars
zur Konvertierung vonint
inchar*
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;
}
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 FacebookVerwandter Artikel - C++ Integer
- Geben Sie eine 64-Bit-Ganzzahl in C++ an
- Große ganze Zahl in C++
- Verwendung von 128-Bit-Ganzzahlen in C++
- Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen ganzzahligen Ausdrücken in C++
- Makroausdrücke INT_MAX und INT_MIN in C++
- Überprüfen Sie, ob die Eingabe in C++ Integer ist
Verwandter Artikel - C++ Char
- Anzahl der Vorkommen eines Zeichens in String C++
- ASCII-Wert von Char in C++ abrufen
- Wie man ASCII in C++ in Zeichen konvertiert
- Wie konvertiert man ein Char-Array in eine Zeichenkette in C++
- Wie konvertiert man ein Char-Array nach Int in C++
- Wie konvertiert man Zeichenketten in C++ in ein Char-Array