Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2016, 18:10   #1
rostl
Новичок
Джуниор
 
Регистрация: 06.11.2016
Сообщений: 3
По умолчанию Char, wchar_t: не понимаю принцип их работы

Приветствую всех. Начал изучать С++ совсем недавно и вот проходил типы данных.
Мой основной вопрос в том, что я не понимаю, почему тип char и тип wchar_t(который призван для хранения более расширенного набора символов) не могут отображать несколько символов, т.е. слова и предложения? В книге даже был пример такой: wcout << L"tall" << endl; Однако при его компиляции у меня выводится последняя буква "l" (1 символ). В чем дело? И если они и должны так выводить всего лишь по 1 символу, то как мне создать символьную константу с предложением допустим "Ошибка. Перезагрузите программу"?
rostl вне форума Ответить с цитированием
Старый 06.11.2016, 18:23   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

char и wchar_t это обычно 1 символ.
(на самом деле не всегда, ибо в кодировках юникод размер символа в байтах не фиксирован + размер wchar_t зависит от компилятора. А char бывает используют и для других целей, например просто для хранения байтов, но по идее для этого логичнее взять что-нибудь типа uint8_t)

char — 1 байт, wchar_t — зависит от компилятора, вроде бы обычно 2 (на винде) или 4 (не на винде) байта.

char*, wchar_t* — обычно это строка, то есть указатель на массив символов. (в Си, в С++ вместо этого есть классы std::string, std::wstring)

Цитата:
Сообщение от rostl Посмотреть сообщение
как мне создать символьную константу с предложением допустим "Ошибка. Перезагрузите программу"?
Код:
const char* str = "Ошибка. Перезагрузите программу";
Код:
const wchar_t* str = L"Ошибка. Перезагрузите программу";
Код:
const char const * str = "Ошибка. Перезагрузите программу";
Код:
const wchar_t const * str = L"Ошибка. Перезагрузите программу";
Код:
#define STR "Ошибка. Перезагрузите программу"
Код:
#define STR L"Ошибка. Перезагрузите программу"
Код:
const std::string str("Ошибка. Перезагрузите программу");
Код:
const std::wstring str(L"Ошибка. Перезагрузите программу");
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 06.11.2016 в 18:45.
Alex11223 вне форума Ответить с цитированием
Старый 06.11.2016, 19:14   #3
rostl
Новичок
Джуниор
 
Регистрация: 06.11.2016
Сообщений: 3
По умолчанию

Спасибо большое! Я понял
rostl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки в C++, отличие char* и wchar_t* HelloUser Общие вопросы C/C++ 17 17.08.2021 18:34
wchar_t -> char -> wchar_t | Без потери данных cosmopolit Visual C++ 1 27.10.2014 22:19
string-char-wchar_t-char-string чето потерял magog7 Общие вопросы C/C++ 0 08.08.2011 20:21
char в wchar_t softrix Общие вопросы C/C++ 5 08.11.2010 15:40