C++ Program na konverziu int na char
V tomto článku sa naučíme, ako previesť int na char v C++. Pre túto konverziu existuje 5 nasledujúcich spôsobov:
- Použitie pretypovania. Použitie static_cast. Pomocou sprintf(). Pomocou to_string() a c_str(). Pomocou stringstream.
Začnime podrobne diskutovať o každej z týchto metód.
Príklady:
Vstup: N = 65
Výkon: AVstup: N = 97
Výkon: a
1. Použitie Typecasting
Metóda 1:
- Deklarácia a inicializácia: Na začiatok deklarujeme a inicializujeme naše celé číslo s hodnotou, ktorá sa má previesť. Typecasting: Je to technika na transformáciu jedného dátového typu na iný. Pretypujeme celé číslo N a jeho hodnotu uložíme do premennej dátového typu char c. Vytlačte znak: Nakoniec vytlačte znak pomocou cout.
Nižšie je uvedený program C++ na konverziu int na char pomocou pretypovania:
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;> }> |
Výkon
a
Časová zložitosť je O(1) a pomocný priestor je O(1).
Metóda 2:
- Deklarácia a inicializácia: Na začiatok deklarujeme a inicializujeme naše celé číslo s hodnotou, ktorá sa má previesť. Pretypovanie: Deklarujte ďalšiu premennú ako znak c a priraďte hodnotu N k C Vytlačte znak: Nakoniec vytlačte znak pomocou cout.
Nižšie je uvedený program C++ na konverziu int na char pomocou pretypovania:
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;> }> |
Výkon
A
2. Použitie static_cast
Celé číslo je možné previesť na znak pomocou funkcie static_cast. Nižšie je uvedený program C++ na konverziu int na char pomocou 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;> }> |
Výkon
A
3. Použitie sprintf()
Prideľte priestor pre jednu premennú typu int, ktorá sa skonvertuje na vyrovnávaciu pamäť znakov. Stojí za zmienku, že nasledujúci príklad definuje maximálnu dĺžku Max_Digits pre celočíselné údaje. Pretože funkcia sprintf posiela char reťazec ukončený 0 bajtmi do cieľa, pridáme sizeof(char), aby sme získali dĺžku vyrovnávacej pamäte char. V dôsledku toho musíme zabezpečiť, aby bolo pre túto vyrovnávaciu pamäť vyhradený dostatok miesta.
Nižšie je uvedený program C++ na konverziu int na char pomocou 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;> }> |
Výkon
n_char: 1234
4. Použitie to_string() a c_str()
Funkcia to string() transformuje jednu celočíselnú premennú alebo iné dátové typy na reťazec. Metóda c_str() konvertuje reťazec na pole znakov, ktoré končí znakom null.
Nižšie je uvedený program C++ na konverziu int na char pomocou to_string() a 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;> }> |
Výkon
n_char: 1234
5. Použitie stringstream
Stringstream spája objekt typu string s prúdom, čo vám umožňuje čítať z neho, ako keby to bol prúd (ako cin). Stringstream vyžaduje zahrnutie súboru hlavičky streamu. Trieda stringstream sa hodí pri spracovaní vstupu.
Nižšie je uvedený program C++ na konverziu int na char pomocou 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;> }> |
Výkon
n_char: 1234
Metóda: Prevod hodnoty int na char pridaním 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;> }> |
Výkon
A
Časová zložitosť: O(1).
Pomocný priestor: O(1).
Prístup: ASCII hodnota offset prístup
Kroky:
- Vezmite celočíselný vstup od používateľa.
- Skontrolujte, či vstupná hodnota zodpovedá platnému znaku v tabuľke ASCII tak, že skontrolujete rozsah vstupnej hodnoty.
- Ak vstupná hodnota zodpovedá platnému znaku, pridajte zodpovedajúcu hodnotu posunu „0“ alebo „A“ (v závislosti od vstupu) k celočíselnej hodnote, aby ste získali zodpovedajúcu hodnotu znaku.
- Zadajte príslušný znak.
C++
#include> using> namespace> std;> int> main() {> > int> num = 65;> > cout < <> 'Enter an integer: '> < < num < < endl;> > > char> ch;> > if> (num>= 65 && č <= 90) {> > ch = num;> > }> else> if> (num>= 97 && č <= 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 && č <= 90) {> > ch = num;> > }> else> if> (num>= 97 && č <= 122) {> > ch = num;> > }> else> {> > cout < <> 'Invalid input.'> < < endl;> > return> 0;> > }> > cout < <> 'The corresponding character is: '> < < ch < < endl;> > return> 0;> }> |
Výkon
Enter an integer: 65 The corresponding character is: A Enter an integer: 97 The corresponding character is: a
Časová zložitosť: O(1), pretože nie sú zahrnuté žiadne slučky.
Pomocný priestor: O(1), pretože na uloženie výsledku používame iba premennú s jedným znakom.
Názov prístupu: Aritmetická konverzia
Kroky:
- Vypočítajte počet číslic vo vstupnej hodnote typu int.
- Iterujte cez číslice sprava doľava, extrahujte každú číslicu a pridajte ASCII hodnotu „0“, aby ste ju previedli na znak.
- Uložte výsledné pole znakov do poskytnutej výstupnej vyrovnávacej pamäte.
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;> }> |
Výkon
12345
Časová zložitosť : O(log10 n), kde n je vstupná int hodnota.
Zložitosť priestoru: O(log10 n), kde n je vstupná int hodnota, kvôli potrebe uložiť pole výstupných znakov.