V tomto článku se naučíme, jak převést int na char v C++. Pro tento převod existuje 5 následujících způsobů:
- Použití přetypování. Pomocí static_cast. Pomocí sprintf(). Použití to_string() a c_str(). Pomocí stringstream.
Začněme podrobně probrat každou z těchto metod.
Příklady:
Vstup: N = 65
Výstup: AVstup: N = 97
Výstup: A
1. Použití Typecasting
Metoda 1:
- Deklarace a inicializace: Nejprve deklarujeme a inicializujeme naše celé číslo s hodnotou, která má být převedena. Typecasting: Je to technika pro transformaci jednoho datového typu na jiný. Typujeme celé číslo N a ukládáme jeho hodnotu do proměnné c datového typu char. Tisk znaku: Nakonec znak vytiskněte pomocí cout.
Níže je uveden program C++ pro převod int na char pomocí přetypování:
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ýstup
a>
Časová složitost je O(1) a pomocný prostor je O(1).
Metoda 2:
- Deklarace a inicializace: Nejprve deklarujeme a inicializujeme naše celé číslo s hodnotou, která má být převedena. Přetypování: Deklarujte jinou proměnnou jako znak c a přiřaďte hodnotu N k C Vytiskněte znak: Nakonec znak vytiskněte pomocí cout.
Níže je uveden program C++ pro převod int na char pomocí přetypování:
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ýstup
A>
2. Použití static_cast
Celé číslo lze převést na znak pomocí funkce static_cast. Níže je uveden program C++ pro převod int na char pomocí 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ýstup
A>
3. Použití sprintf()
Přidělte prostor pro jednu proměnnou int, která bude převedena na vyrovnávací paměť znaků. Stojí za zmínku, že následující příklad definuje maximální délku Max_Digits pro celočíselná data. Protože funkce sprintf posílá char řetězec zakončený 0 bajty do cíle, přidáme sizeof(char), abychom získali délku char bufferu. V důsledku toho musíme zajistit, aby bylo pro tento buffer vyhrazen dostatek místa.
Níže je uveden program C++ pro převod int na char pomocí 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ýstup
n_char: 1234>
4. Použití to_string() a c_str()
Funkce to string() transformuje jednu celočíselnou proměnnou nebo jiné datové typy na řetězec. Metoda c_str() převede řetězec na pole znaků zakončených znakem null.
Níže je uveden program C++ pro převod int na char pomocí 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ýstup
n_char: 1234>
5. Použití stringstream
Stringstream spojuje objekt typu string s proudem a umožňuje vám z něj číst, jako by to byl proud (jako cin). Stringstream vyžaduje zahrnutí souboru záhlaví streamu. Třída stringstream se hodí při zpracování vstupu.
Níže je uveden program C++ pro převod int na char pomocí 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ýstup
n_char: 1234>
Metoda: Převod hodnoty int na char přidání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ýstup
A>
Časová složitost: O(1).
Pomocný prostor: O(1).
Přístup: ASCII hodnota offset přístup
kroky:
nejlepší hentai
- Vezměte celočíselný vstup od uživatele.
- Zkontrolujte, zda vstupní hodnota odpovídá platnému znaku v tabulce ASCII kontrolou rozsahu vstupní hodnoty.
- Pokud vstupní hodnota odpovídá platnému znaku, přidejte odpovídající hodnotu offsetu „0“ nebo „A“ (v závislosti na vstupu) k hodnotě celého čísla, abyste získali odpovídající hodnotu znaku.
- Zadejte odpovídající 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ýstup
Enter an integer: 65 The corresponding character is: A Enter an integer: 97 The corresponding character is: a>
Časová náročnost: O(1), protože nejsou zapojeny žádné smyčky.
Pomocný prostor: O(1), protože k uložení výsledku používáme pouze proměnnou s jedním znakem.
Název přístupu: Aritmetický převod
kroky:
- Vypočítejte počet číslic ve vstupní hodnotě int.
- Procházejte číslice zprava doleva, extrahujte každou číslici a přidejte ASCII hodnotu „0“, abyste ji převedli na znak.
- Uložte výsledné pole znaků do poskytnuté výstupní vyrovnávací paměti.
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ýstup
12345>
Časová složitost : O(log10 n), kde n je vstupní int hodnota.
Složitost prostoru: O(log10 n), kde n je vstupní int hodnota, kvůli nutnosti uložit pole výstupních znaků.