Converti Int in Char Array in C++
-
Usa la funzione
std::sprintfper convertireintinchar* -
Combina i metodi
to_string()ec_str()per convertireintinchar* -
Usa i metodi di classe
std::stringstreamper la conversione -
Usa la funzione
std::to_charsper convertireintinchar*
Questo articolo spiegherà come convertire int in un char array (char*) usando metodi diversi.
Nei seguenti esempi, supponiamo di memorizzare l’output del buffer di memoria di conversione e, per scopi di verifica, restituiremo il risultato con std::printf.
Usa la funzione std::sprintf per convertire int in char*
Per prima cosa, dobbiamo allocare spazio per memorizzare una singola variabile int che convertiremo in un buffer char. Notare che il seguente esempio definisce la lunghezza massima MAX_DIGITS per i dati interi. Per calcolare la lunghezza del buffer di caratteri, aggiungiamo sizeof(char) perché la funzione sprintf scrive automaticamente la stringa di caratteri che termina il byte \0 nella destinazione. Quindi dovremmo occuparci di allocare abbastanza spazio per questo buffer.
#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;
}
Produzione:
num_char : 1234
Nota che chiamare sprintf con buffer sorgente e destinazione sovrapposti (es. sprintf(buf, "%s some text to add", buf)) non è raccomandato in quanto ha un comportamento indefinito e produrrà risultati errati a seconda del compilatore.
Combina i metodi to_string() e c_str() per convertire int in char*
Questa versione utilizza i metodi della classe std::string per eseguire la conversione, rendendola una versione molto più sicura rispetto a sprintf come mostrato nell’esempio precedente.
#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;
}
Usa i metodi di classe std::stringstream per la conversione
Questo metodo è implementato usando la classe std::stringstream. Vale a dire, creiamo un flusso temporaneo basato su stringhe in cui memorizzare i dati int, quindi restituire l’oggetto stringa con il metodo str e infine chiamare c_str per eseguire la conversione.
#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;
}
Usa la funzione std::to_chars per convertire int in char*
Questa versione è una funzione in puro stile C++ aggiunta in C++ 17 e definita nell’intestazione <charconv>. Tra i lati positivi, questo metodo offre operazioni su intervalli, che potrebbero essere la soluzione più flessibile in scenari specifici.
#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 FacebookArticolo correlato - C++ Integer
- Contare il numero di cifre in un numero in C++
- Controlla se l'input è intero in C++
- Controlla se un numero è primo in C++
- Espressioni macro INT_MAX e INT_MIN in C++
- Analizzare un int da una stringa in C++
- Converti Int in caratteri ASCII in C++
