W tym artykule dowiemy się, jak przekonwertować int na char w C++. W przypadku tej konwersji istnieje 5 następujących sposobów:
- Korzystanie z rzutowania typów. Używanie static_cast. Używanie sprintf(). Używanie to_string() i c_str(). Korzystanie ze strumienia string.
Zacznijmy od szczegółowego omówienia każdej z tych metod.
Przykłady:
Wejście: N = 65
Wyjście: AWejście: N = 97
Wyjście: A
1. Korzystanie z rzutowania
Metoda 1:
- Deklaracja i inicjalizacja: Na początek zadeklarujemy i zainicjujemy naszą liczbę całkowitą wartością, która ma zostać przekonwertowana. Typecasting: Jest to technika przekształcania jednego typu danych w inny. Wpisujemy liczbę całkowitą N i zapisujemy jej wartość w zmiennej typu char c. Wydrukuj znak: Na koniec wydrukuj znak za pomocą cout.
Poniżej znajduje się program C++ do konwersji int na znak przy użyciu rzutowania typów:
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;> }> |
>
>Wyjście
a>
Złożoność czasowa to O(1), a przestrzeń pomocnicza to O(1).
Metoda 2:
- Deklaracja i inicjalizacja: Na początek zadeklarujemy i zainicjujemy naszą liczbę całkowitą wartością, która ma zostać przekonwertowana. Typecasting: Zadeklaruj inną zmienną jako znak c i przypisz wartość N do C. Wydrukuj znak: Na koniec wydrukuj znak za pomocą cout.
Poniżej znajduje się program C++ do konwersji int na znak przy użyciu rzutowania typów:
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;> }> |
milion w liczbach
>
>Wyjście
A>
2. Używanie static_cast
Liczbę całkowitą można przekonwertować na znak za pomocą funkcji static_cast. Poniżej znajduje się program C++ do konwersji int na char przy użyciu 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;> }> |
>
>Wyjście
A>
3. Korzystanie ze sprintf()
Przydziel miejsce na pojedynczą zmienną int, która zostanie przekonwertowana na bufor znaków. Warto zauważyć, że poniższy przykład definiuje maksymalną długość Max_Digits dla danych całkowitych. Ponieważ funkcja sprintf wysyła do miejsca docelowego ciąg znaków kończący się 0 bajtami, dodajemy sizeof(char), aby uzyskać długość bufora znaków. W rezultacie musimy zapewnić wystarczającą ilość miejsca na ten bufor.
Poniżej znajduje się program C++ do konwersji int na char za 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;> }> |
>
błąd semantyczny
>Wyjście
n_char: 1234>
4. Korzystanie z to_string() i c_str()
Funkcja to string() przekształca pojedynczą zmienną całkowitą lub inne typy danych w ciąg znaków. Metoda c_str() konwertuje ciąg znaków na tablicę znaków zakończoną znakiem null.
Poniżej znajduje się program C++ do konwersji int na char za pomocą 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;> }> |
>
>Wyjście
n_char: 1234>
5. Korzystanie ze strumienia stringów
Stringstream łączy obiekt string ze strumieniem, umożliwiając odczyt z niego tak, jakby był strumieniem (jak cin). Stringstream wymaga dołączenia pliku nagłówkowego sstream. Klasa stringstream przydaje się podczas przetwarzania danych wejściowych.
Poniżej znajduje się program C++ do konwersji int na char za 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;> }> |
>
>Wyjście
n_char: 1234>
Metoda: Konwersja wartości int na char poprzez dodanie 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;> }> |
>
operatory Javy
>Wyjście
A>
Złożoność czasowa: O(1).
Przestrzeń pomocnicza: O(1).
Podejście: podejście z przesunięciem wartości ASCII
Kroki:
- Pobierz od użytkownika liczbę całkowitą.
- Sprawdź, czy wartość wejściowa odpowiada prawidłowemu znakowi w tabeli ASCII, sprawdzając zakres wartości wejściowej.
- Jeśli wartość wejściowa odpowiada prawidłowemu znakowi, dodaj odpowiednią wartość przesunięcia „0” lub „A” (w zależności od wejścia) do wartości całkowitej, aby uzyskać odpowiednią wartość znaku.
- Wyprowadź odpowiedni znak.
C++
#include> using> namespace> std;> int> main() {> >int> num = 65;> >cout <<>'Enter an integer: '> << num << endl;> > >char> ch;> >if>(num>= 65 && liczba<= 90) {> >ch = num;> >}>else> if>(num>= 97 && liczba<= 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 && liczba<= 90) {> >ch = num;> >}>else> if>(num>= 97 && liczba<= 122) {> >ch = num;> >}>else> {> >cout <<>'Invalid input.'> << endl;> >return> 0;> >}> >cout <<>'The corresponding character is: '> << ch << endl;> >return> 0;> }> |
>
>Wyjście
Enter an integer: 65 The corresponding character is: A Enter an integer: 97 The corresponding character is: a>
Złożoność czasowa: O(1), ponieważ nie ma w tym żadnych pętli.
Przestrzeń pomocnicza: O(1), ponieważ do przechowywania wyniku używamy tylko zmiennej jednoznakowej.
Nazwa podejścia: Konwersja arytmetyczna
Kroki:
- Oblicz liczbę cyfr wejściowej wartości int.
- Iteruj po cyfrach od prawej do lewej, wyodrębniając każdą cyfrę i dodając wartość ASCII „0”, aby przekonwertować ją na znak.
- Zapisz wynikową tablicę znaków w dostarczonym buforze wyjściowym.
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; ja--) {> >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;> }> |
>
>Wyjście
12345>
Złożoność czasowa : O(log10 n), gdzie n jest wejściową wartością typu int.
Złożoność przestrzeni: O(log10 n), gdzie n jest wejściową wartością typu int, ze względu na konieczność przechowywania wyjściowej tablicy znaków.