Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
#1

Unicode - указатели на строки - C++

02.05.2011, 15:38. Просмотров 560. Ответов 2
Метки нет (Все метки)

Добрый день!
Работаю в VS 2010. Для начала приведу вырезку из кода:
C++
1
2
3
4
5
6
7
void Rational::errorMsg() const
{
    //MessageBox(HWND_DESKTOP,(LPCWSTR)((void*)"Division by zero!"),(LPCWSTR)((void*)"Warning!"),MB_OK);
    //MessageBox(HWND_DESKTOP,reinterpret_cast<LPCWSTR>("Division by zero!"),reinterpret_cast<LPCWSTR>("Warning!"),MB_OK);
    std::cout<<"Division by zero!\n";
    return;
}
При работе обоих MessageBox(...) сообщение выводится, но с иероглифами. На сколько я понимаю, дело в Unicode преобразованиях, могу, конечно, ошибаться. Если не пользоваться явными приведениями типов, то компилятор "ругается" (приведение к LPCWSTR - const char [16]).
Объясните, пожалуйста, без дальнейших вопросов, что происходит.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2011, 15:38     Unicode - указатели на строки
Посмотрите здесь:

Строки и указатели C++
C++ Строки и указатели........
Строки и указатели с++ C++
Указатели и строки C++
C++ Как выводить строки в unicode?
C++ Указатели на строки
C++ Указатели и строки
C++ Указатели и строки
Указатели.Строки и указатели C++
Строки и указатели в C++ C++
C++ Указатели на строки
C++ Формат строки в кодировке Unicode?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт С++
1017 / 796 / 48
Регистрация: 30.04.2011
Сообщений: 1,617
02.05.2011, 16:06     Unicode - указатели на строки #2
C++
1
L"message"
Ma3a
Эксперт C++
613 / 457 / 31
Регистрация: 28.01.2011
Сообщений: 605
02.05.2011, 17:32     Unicode - указатели на строки #3
alexsvk, иероглифы выводятся потому что вы не так делаете преобразование строк. Обычная стоковая константа имеет тип char const *, каждый символ по одному байту обычно. Естественно, заставляя компилятор считать, что набор однобайтовых символов -- это юникод-строка(где каждый символ по 2 байта или 4, в зависимости от платформы), из нескольких однобайтовых символов он лепит один, вот и выходит непонятно что. Как уже было указано, чтобы создать строковую константу unicode формата, надо добавить буковку L впереди, тогда константа будет иметь тип wchar_t const *, что уже без проблем можно преобразовать в LPCWSTR.
Yandex
Объявления
02.05.2011, 17:32     Unicode - указатели на строки
Ответ Создать тему
Опции темы

Текущее время: 00:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru