Tässä artikkelissa opimme muuttamaan int chariksi C++:ssa. Tälle muunnokselle on 5 tapaa seuraavasti:
- Typecastingin käyttö. Static_castin käyttö. Käyttämällä sprintf(). Käytä to_string() ja c_str(). Stringstreamin käyttö.
Aloitetaan keskustelemalla jokaisesta näistä menetelmistä yksityiskohtaisesti.
Esimerkkejä:
Syöte: N = 65
Lähtö: ASyöte: N = 97
Lähtö: a
1. Typecastingin käyttäminen
Tapa 1:
- Ilmoitus ja alustus: Aluksi ilmoitamme ja alustamme kokonaislukumme muunnettavalla arvolla. Typecasting: Se on tekniikka tietotyypin muuntamiseksi toiseksi. Kirjoitamme kokonaislukua N ja tallennamme sen arvon tietotyypin char muuttujaan c. Tulosta merkki: Tulosta lopuksi merkki käyttämällä cout.
Alla on C++-ohjelma, joka muuntaa int chariksi typecastingin avulla:
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;> }> |
>
>Lähtö
a>
Aikamonimutkaisuus on O(1) ja apuavaruus on O(1).
Tapa 2:
- Ilmoitus ja alustus: Aluksi ilmoitamme ja alustamme kokonaislukumme muunnettavalla arvolla. Typecasting: Määritä toinen muuttuja merkiksi c ja määritä C:lle N:n arvo Tulosta merkki: Tulosta lopuksi merkki käyttämällä cout.
Alla on C++-ohjelma, joka muuntaa int chariksi typecastingin avulla:
C++
kali linux -komennot
// 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;> }> |
>
>Lähtö
A>
2. Static_castin käyttäminen
Kokonaisluku voidaan muuntaa merkiksi käyttämällä static_cast-funktiota. Alla on C++-ohjelma, jolla int muunnetaan chariksi käyttämällä static_castia:
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;> }> |
>
>Lähtö
A>
3. Sprintf()
Varaa tilaa yhdelle int-muuttujalle, joka muunnetaan merkkipuskuriksi. On syytä huomata, että seuraava esimerkki määrittelee maksimipituuden Max_Digits kokonaislukudatalle. Koska sprintf-funktio lähettää 0 tavuun päättyvän merkkijonon määränpäähän, lisäämme sizeof(char) saadaksemme char-puskurin pituuden. Tämän seurauksena meidän on varmistettava, että tälle puskurille on varattu riittävästi tilaa.
Alla on C++-ohjelma, joka muuntaa int chariksi käyttämällä sprintf(:tä):
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;> }> |
>
>Lähtö
n_char: 1234>
4. Käytä komentoja to_string() ja c_str()
To string()-funktio muuntaa yksittäisen kokonaislukumuuttujan tai muun tietotyypin merkkijonoksi. c_str()-menetelmä muuntaa merkkijonon merkkijonoksi, joka päättyy tyhjään merkkiin.
Alla on C++-ohjelma, joka muuntaa int chariksi käyttämällä to_string() ja 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;> }> |
>
>Lähtö
n_char: 1234>
5. Stringstreamin käyttäminen
Merkkijonovirta yhdistää merkkijonoobjektin virtaan, jolloin voit lukea siitä ikään kuin se olisi virta (kuten cin). Stringstream edellyttää stringin otsikkotiedoston sisällyttämistä. Stringstream-luokka on kätevä syötettä käsiteltäessä.
Alla on C++-ohjelma, jolla int muunnetaan chariksi merkkijonovirran avulla:
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;> }> |
>
>Lähtö
n_char: 1234>
Menetelmä: Muunna int-arvo chariksi lisäämällä 0
C++
on erikoishahmo
// 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;> }> |
>
>Lähtö
A>
Aika monimutkaisuus: O(1).
Aputila: O(1).
Lähestymistapa: ASCII-arvopoikkeamamenetelmä
Askeleet:
- Ota käyttäjältä kokonaisluku.
- Tarkista, vastaako syötearvo ASCII-taulukon kelvollista merkkiä tarkistamalla syöttöarvon alue.
- Jos syötearvo vastaa kelvollista merkkiä, lisää vastaava offset-arvo '0' tai 'A' (syötteestä riippuen) kokonaislukuarvoon saadaksesi vastaavan merkin arvon.
- Anna vastaava merkki.
C++
#include> using> namespace> std;> int> main() {> >int> num = 65;> >cout <<>'Enter an integer: '> << num << endl;> > >char> ch;> >if>(num>= 65 && nr<= 90) {> >ch = num;> >}>else> if>(num>= 97 && nr<= 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 && nr<= 90) {> >ch = num;> >}>else> if>(num>= 97 && nr<= 122) {> >ch = num;> >}>else> {> >cout <<>'Invalid input.'> << endl;> >return> 0;> >}> >cout <<>'The corresponding character is: '> << ch << endl;> >return> 0;> }> |
>
>Lähtö
Enter an integer: 65 The corresponding character is: A Enter an integer: 97 The corresponding character is: a>
Aika monimutkaisuus: O(1), koska siinä ei ole silmukoita.
Aputila: O(1), koska käytämme vain yhden merkin muuttujaa tuloksen tallentamiseen.
Lähestymistavan nimi: Aritmeettinen muunnos
Askeleet:
- Laske syötetyn int-arvon numeroiden lukumäärä.
- Iteroi numeroita oikealta vasemmalle, poimi jokainen numero ja lisää ASCII-arvo '0' muuntaaksesi sen merkiksi.
- Tallenna tuloksena oleva char-taulukko toimitettuun tulostuspuskuriin.
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;> }> |
>
>Lähtö
12345>
Aika monimutkaisuus : O(log10 n), missä n on syötetyn int-arvo.
Avaruuden monimutkaisuus: O(log10 n), jossa n on syötetyn int-arvo, koska tulostettujen char-taulukoiden tallennus on tarpeen.