Programa C++ per a la conversió d'int a char

En aquest article, aprendrem a convertir int a char en C++. Per a aquesta conversió, hi ha 5 maneres següents:

    Ús de tipografia. S'utilitza static_cast. Utilitzant sprintf(). Utilitzant to_string() i c_str(). Utilitzant stringstream.

Comencem per parlar de cadascun d'aquests mètodes en detall.

Exemples:

Entrada: N = 65
Sortida: A

Entrada: N = 97
Sortida: a

1. Ús de Typecasting

Mètode 1:

    Declaració i inicialització: Per començar, declararem i inicialitzarem el nostre enter amb el valor a convertir. Typecasting: és una tècnica per transformar un tipus de dades en un altre. Estem escrivint l'enter N i desant el seu valor a la variable de tipus de dades char c. Imprimeix el caràcter: Finalment, imprimeix el caràcter amb cout.

A continuació es mostra el programa C++ per convertir int a char mitjançant l'ecasting:

C++




// C++ program to convert> // int to char using typecasting> #include> using> namespace> std;> // Driver code> int> main()> {> > int> N = 97;> > cout < <> char> (N);> > return> 0;> }>

Sortida

a 

La complexitat temporal és O(1) i un espai auxiliar és O(1).

Mètode 2:

    Declaració i inicialització: Per començar, declararem i inicialitzarem el nostre sencer amb el valor a convertir. Tipografia: Declara una altra variable com a caràcter c i assigna el valor de N a la C Imprimeix el caràcter: Finalment, imprimeix el caràcter amb cout.

A continuació es mostra el programa C++ per convertir int a char mitjançant l'ecasting:

C++




// C++ program to convert> // int to char using typecasting> #include> using> namespace> std;> // Driver code> int> main()> {> > int> N = 65;> > char> c = N;> > cout < < c;> > return> 0;> }>

Sortida

A 

2. Utilitzant static_cast

L'enter es pot convertir en un caràcter mitjançant la funció static_cast. A continuació es mostra el programa C++ per convertir int a char mitjançant static_cast:

C++




// C++ program to convert> // int to char using static_cast> #include> using> namespace> std;> // Driver code> int> main()> {> > int> N = 65;> > > char> c => static_cast> <> char> >(N);> > cout < < c;> > return> 0;> }>

Sortida

A 

3. Utilitzant sprintf()

Assigna espai per a una sola variable int que es convertirà en un buffer de caràcters. Val la pena assenyalar que l'exemple següent defineix la longitud màxima Max_Digits per a dades senceres. Com que la funció sprintf envia una cadena de caràcters que acaba amb 0 bytes a la destinació, afegim sizeof(char) per obtenir la longitud del buffer de caràcters. Com a resultat, ens hem d'assegurar que hi ha prou espai reservat per a aquest buffer.

A continuació es mostra el programa C++ per convertir int a char mitjançant sprintf():

C++




// C++ program to convert> // int to char using sprintf()> #include> using> namespace> std;> #define Max_Digits 10> // Driver code> int> main()> {> > int> N = 1234;> > char> n_char[Max_Digits +> > sizeof> (> char> )];> > std::> sprintf> (n_char,> > '%d'> , N);> > std::> printf> (> 'n_char: %s '> ,> > n_char);> > return> 0;> }>

Sortida

n_char: 1234 

4. Utilitzant to_string() i c_str()

La funció to string() transforma una sola variable entera o altres tipus de dades en una cadena. El mètode c_str() converteix una cadena en una matriu de caràcters, acabant amb un caràcter nul.

A continuació es mostra el programa C++ per convertir int a char mitjançant to_string() i c_str():

C++




// C++ program to convert> // int to char using sto_string()> // and c_str()> #include> using> namespace> std;> // Driver code> int> main()> {> > int> N = 1234;> > string t = to_string(N);> > char> const> *n_char = t.c_str();> > printf> (> 'n_char: %s '> ,> > n_char);> > return> 0;> }>

Sortida

n_char: 1234 

5. Ús de stringstream

Un stringstream connecta un objecte string amb un stream, la qual cosa us permet llegir-ne com si fos un stream (com cin). Stringstream requereix la inclusió del fitxer de capçalera sstream. La classe stringstream és útil quan es processa l'entrada.

A continuació es mostra el programa C++ per convertir int a char mitjançant stringstream:

C++




// C++ program to convert> // int to char using> // stringstream> #include> using> namespace> std;> #include> // Driver code> int> main()> {> > int> N = 1234;> > std::stringstream t;> > t < < N;> > char> const> *n_char => > t.str().c_str();> > printf> (> 'n_char: %s '> ,> > n_char);;> > return> 0;> }>

Sortida

n_char: 1234 

Mètode: convertint el valor int a char afegint 0

C++




// C++ program to convert> // int to char using typecasting by adding zero> #include> using> namespace> std;> //Driver code> int> main()> {> > int> number = 65;> > char> charvalue = (> char> (number)+0);> > cout < < charvalue;> > return> 0;> }>

Sortida

A 

Complexitat temporal: O(1).
Espai auxiliar: O(1).

Enfocament: enfocament de compensació de valors ASCII

Passos:

  1. Preneu una entrada enter de l'usuari.
  2. Comproveu si el valor d'entrada correspon a un caràcter vàlid a la taula ASCII comprovant l'interval del valor d'entrada.
  3. Si el valor d'entrada correspon a un caràcter vàlid, afegiu el valor de compensació corresponent de '0' o 'A' (segons l'entrada) al valor sencer per obtenir el valor de caràcter corresponent.
  4. Emet el caràcter corresponent.

C++




#include> using> namespace> std;> int> main() {> > int> num = 65;> > cout < <> 'Enter an integer: '> < < num < < endl;> > > char> ch;> > if> (num>= 65 && núm <= 90) {> > ch = num;> > }> else> if> (num>= 97 && núm <= 122) {> > ch = num;> > }> else> {> > cout < <> 'Invalid input.'> < < endl;> > return> 0;> > }> > > cout < <> 'The corresponding character is: '> < < ch < < endl;> > num = 97;> > cout < <> 'Enter an integer: '> < < num < < endl;> > if> (num>= 65 && núm <= 90) {> > ch = num;> > }> else> if> (num>= 97 && núm <= 122) {> > ch = num;> > }> else> {> > cout < <> 'Invalid input.'> < < endl;> > return> 0;> > }> > cout < <> 'The corresponding character is: '> < < ch < < endl;> > return> 0;> }>

Sortida

Enter an integer: 65 The corresponding character is: A Enter an integer: 97 The corresponding character is: a 

Complexitat temporal: O(1), ja que no hi ha cap bucle implicat.
Espai auxiliar: O(1), ja que només estem utilitzant una variable d'un sol caràcter per emmagatzemar el resultat.

Nom de l'enfocament: conversió aritmètica

Passos:

  1. Calcula el nombre de dígits del valor int d'entrada.
  2. Itera entre els dígits de dreta a esquerra, extreu cada dígit i afegint el valor ASCII de '0' per convertir-lo en un caràcter.
  3. Emmagatzemeu la matriu de caràcters resultant a la memòria intermèdia de sortida proporcionada.

C++




#include> #include> using> namespace> std;> void> int_to_char(> int> num,> char> *result) {> > int> temp = num;> > int> len = 0;> > while> (temp>0) {> > len++;> > temp /= 10;> > }> > for> (> int> i = len - 1; i>= 0; i--) {> > result[i] = num % 10 +> '0'> ;> > num /= 10;> > }> > result[len] => ' '> ;> }> int> main() {> > int> num = 12345;> > char> result[100];> > int_to_char(num, result);> > cout < < result < < endl;> > return> 0;> }>

Sortida

12345 

Complexitat temporal : O(log10 n), on n és el valor int d'entrada.
Complexitat espacial: O(log10 n), on n és el valor int d'entrada, a causa de la necessitat d'emmagatzemar la matriu de caràcters de sortida.