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

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

Восстановить пароль Регистрация
 
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
02.05.2011, 15:38     Unicode - указатели на строки #1
Добрый день!
Работаю в 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++ как выводить строки в unicode?
C++ Указатели на строки
C++ Указатели и строки
C++ Указатели и строки
Строки и указатели в C++ C++
C++ Указатели на строки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
02.05.2011, 16:06     Unicode - указатели на строки #2
C++
1
L"message"
Ma3a
Эксперт C++
612 / 456 / 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 - указатели на строки
Ответ Создать тему
Опции темы

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