Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для shurikan

Старожил


Сообщения: 240
Благодарности: 1

Профиль | Отправить PM | Цитировать


Kelasant
Цитата:
// здесь ss имеет значение "\x2D54\x50581"
LPWSTR - это строка "широких" символов (Wide char STR). А поскольку начертаний "широких" символов с такими кодами в системе нет, строка выводится в шестнадцатеричных СЛОВАХ. \x2D54 - эквивалентна "обычной" строке "T-", т.к. '\x54' есть символ 'T', а '\x2D' -- соответственно '-'. Второе слово даст тебе "XP". Ну а 1 в конце от того, что размер "широкого" символа равен 2 байтам, а в строке остался один байт, естественно код отобразился как обычный символ. А произошло это из-за неправильного приведения. Строка скопировалась посимвольно без преобразования "обычных" символов в "широкие". Вместо
Цитата:
LPWSTR ss = (LPWSTR)ts;
нужно
Код: Выделить весь код
LPWSTR ss = LPWSTR (ts);
и произойдет не приведения, а преобразование типа.

-------
UNIX, UNAS и др. Myself I'll like 'em


Отправлено: 16:31, 18-02-2005 | #6