Тип данных char предназначен для хранения одного символа и занимает 1 байт.
Диапазон возможных значений (при преобразовании в целочисленное значение):
==-128 - 127== для char
==0 - 255== для unsigned char
Перевод кодов в символы
'0'..'9' – цифры в формате символов (ASCII-коды: 48-57)
'A'..'Z' – заглавные (прописные) латинские буквы (ASCII-коды: 65-90)
'a'..'z' – маленькие (строчные) латинские буквы (ASCII-коды: 97-122)
// Выводит значения нажатых клавиш как символы и целые числа
#include <iostream> // cout, endl
#include <conio.h> // getch()
using namespace std;
int main(){
char ch = 'a'; // Символьная переменная для хранения нажатой кнопки
cout << "Press a key (Esc for exit)\n"; // Выводим значение а и приглашение к нажатию кнопки(ок)
while(ch != 27){ // Выполнять пока не нажата кнопка Esc
ch = getch(); // Считываем символ
cout << string(1, ch) << " = " << (int)ch << endl; // Выводим значение ch как символа и как числа
}
}
Для преобразования wchar_t* в char* используется функция wcstombs(char* dst, wchar_t* src, size_t string_length)
Для преобразования char* в wchar_t* используется функция mbstowcs(wchar_t* dst, char* src, size_t string_length)
// Преобразование широких строк (wchar_t*) в обычные (char*) и наоборот. С кирилицей могут быть проблемы.
#include <iostream> // cout
#include <windows.h> // MessageBoxW
int main(){
wchar_t wch[] = L"Hello world!"; // Широкая строка
char ch[256]; // Обычная строка. В нее будем копировать широкую строку
size_t length_wch = wcslen(wch); //12 Длина широкой строки
wcstombs(ch, wch, length_wch + 1); // Преобразование широкой строки в обычную ch = wch (Обязательно длина на 1 больше или не будет символа конца строки)
size_t length_ch = strlen(ch); //12 Длина обычной строки
mbstowcs(wch, ch, length_ch + 1); // Преобразование обычной строки в широкую wch = ch (Обязательно длина на 1 больше или не будет символа конца строки)
MessageBoxW(0, wch, L"Заголовок", MB_OK); // Выводим широкую строку
std::cout << ch; // Выводим обычную строку
}