Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
alexsvk
8 / 8 / 0
Регистрация: 15.07.2010
Сообщений: 255
1

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

02.05.2011, 15:38. Просмотров 677. Ответов 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]).
Объясните, пожалуйста, без дальнейших вопросов, что происходит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2011, 15:38
Ответы с готовыми решениями:

Как выводить строки в unicode?
почему не выводит на экран строки в формате unicode? в win32 прикрасно...

Формат строки в кодировке Unicode?
Какой формат соответствует строке в кодировке UNICODE?

Указатели.Строки и указатели
Вот условия ввода строки:Вводить и обрабатывать строки в цикле до тех пор пока...

Указатели и указатели на указатели, а также типы данных
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс...

Строки и указатели
Выполнить задание двумя способами используя индексы и используя указатели при...

2
ValeryLaptev
Эксперт С++
1050 / 829 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
02.05.2011, 16:06 2
C++
1
L"message"
1
Ma3a
Эксперт С++
619 / 463 / 57
Регистрация: 28.01.2011
Сообщений: 605
02.05.2011, 17:32 3
alexsvk, иероглифы выводятся потому что вы не так делаете преобразование строк. Обычная стоковая константа имеет тип char const *, каждый символ по одному байту обычно. Естественно, заставляя компилятор считать, что набор однобайтовых символов -- это юникод-строка(где каждый символ по 2 байта или 4, в зависимости от платформы), из нескольких однобайтовых символов он лепит один, вот и выходит непонятно что. Как уже было указано, чтобы создать строковую константу unicode формата, надо добавить буковку L впереди, тогда константа будет иметь тип wchar_t const *, что уже без проблем можно преобразовать в LPCWSTR.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2011, 17:32

Указатели и строки
Здравствуйте. Учу указатели (и строки); появилась куча неясных мне моментов,...

Указатели на строки
Есть следующий код: class Strings // класс с указателями на строки (размер...

указатели и строки?
Люди помогите понять, ни как не дается это страшное слово указатель. Так в...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru