Вывести char32_t как строку
- Что происходит когда мы выводим тип
char, почему он выводит не число, а символ.charпрогоняется через какую-то функцию, которая подставляет вместо кода символа символ? - Почему
char32_tвыводит код символа, а не символ какchar? - Как сделать, чтобы
char32_tвыводил символ/строку вместо кода символа?
char symbol_ch = 'Q';
cout << symbol_ch << endl;
wchar_t symbol_wct = L'Q';
cout << symbol_wct << endl;
char32_t symbolc32_t = U'Q';
cout << symbolc32_t << endl;
Ответы (2 шт):
Автор решения: Sergey Tatarincev
→ Ссылка
Для вывода вайдовых строк используйте std::wcout
wchar_t text[] = L"Hello";
std::wcout << text << std::endl;
В случае использования кирилицы возникнут проблемы с кодировкой консоли, но это уже будет совсем другая история
Автор решения: AlexGlebe
→ Ссылка
Кодировки CP1251 , UTF-8 , UTF-32 - разные. А ваша консоль использует только одну. Сначала вы должны узнать свою кодировку консоли , а потом в программе ковертировать в неё.
Попробуйте конвертировать UTF-32 => UTF-8 Потом можно выводить как UTF-8.
# include <iostream>
# include <codecvt>
# include <locale>
using std::cout;
using std :: endl;
int main(){
char symbol_ch = 'Q';
cout << symbol_ch << endl;
std::wstring_convert<std::codecvt_utf8<wchar_t>,wchar_t> cw;
cout << cw.to_bytes(L"Алло") << endl;
std::wstring_convert<std::codecvt_utf8<char32_t>,char32_t> cv;
cout << cv.to_bytes(U"zß水?") << endl;
}
Q
Алло
zß水?