|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Проблема с конвертацией строк на С++ |
|
|
Проблема с конвертацией строк на С++
|
Новый участник Сообщения: 29 |
Профиль | Отправить PM | Цитировать Привет всем!
Есть такой блок: char* ts = new char[100]; memset(ts, 0, sizeof(ts)); StrPCopy(ts, edMyText->Text); // здесь ts имеет правильное значение "T-XP1" LPWSTR ss = (LPWSTR)ts; // здесь ss имеет значение "\x2D54\x50581" Обьясните, плиз, в чем дело? Почему ss не равно "T-XP1"? |
|
Отправлено: 15:25, 15-02-2005 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Потому что ss - это указатель.
|
Отправлено: 15:34, 15-02-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать Тогда скажите, плиз, как мне сделать так, чтобы сей указатель указывал на правильное значение? Что нужно создать и как туда нужно переконвертить?
|
Отправлено: 15:40, 15-02-2005 | #3 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать ss - указатель. Его значение всегда в шестнадцатеричном виде будет давать не-пойми-что. Другое дело - содержимое памяти по этому адресу. А Вы так и не сказали, чем смотрите это самое содержимое (... памяти по адресу, который хранится в указателе ss). printf? wprintf? SetWindowText?
Посмотрите тут по поводу _типов_ указателей (и слева там в меню пощелкайте). Для перевода _содержимого_ одних строк в другие: тут. |
Отправлено: 15:55, 15-02-2005 | #4 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать Спасибо
|
|
Отправлено: 16:05, 15-02-2005 | #5 |
Старожил Сообщения: 240
|
Профиль | Отправить PM | Цитировать Kelasant
Цитата:
Цитата:
и произойдет не приведения, а преобразование типа. |
||
------- Отправлено: 16:31, 18-02-2005 | #6 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать Да, спасибо, я понял
|
Отправлено: 21:27, 18-02-2005 | #7 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать А я ни фига не понял. в первый раз в жизни вижу такое:
Цитата:
LPWSTR - тип данных - указатель. Pointer to a null-terminated string of 16-bit Unicode characters. Хотя речь идёт о С++ (сабж), "явное преобразование типа" LPSTR в LPWSTR даст банальное "приведение типа" LPSTR к LPWSTR, никакой разницы. Содержимое памяти не превратится от этого некоим волшебным образом из CHAR в WCHAR. PS. Кстати, тут ошибка: char* ts = new char[100]; memset(ts, 0, sizeof(ts)); |
|
Отправлено: 23:32, 18-02-2005 | #8 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать Я еще 15-го числа понял свои ошибки при конвертации. Дальше обьяснять не надо, спасибо - уже все работало в тот же день
hasherfrog, а где тут ошибка? Может, я не к месту использую sizeof ? P.S. Мне тоже стало интересно насчет Цитата:
|
|
Отправлено: 21:06, 19-02-2005 | #9 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Нужно
memset(ts, 0, sizeof(char)*100); Ну если короче, то memset(ts, 0, 100); А у Вас memset(ts, 0, sizeof(ts)); даст memset(ts, 0, sizeof(char*)); т.е. memset(ts, 0, 4); |
Отправлено: 02:33, 20-02-2005 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Группировка строк в экселе | pva | Программирование и базы данных | 6 | 16-04-2009 12:41 | |
Разное - количество строк WinXP | Abracadabra | Хочу все знать | 7 | 11-02-2008 23:05 | |
Сравнение строк в PHP | Dutchman Mihel | Вебмастеру | 8 | 06-07-2004 13:04 | |
Проблема с конвертацией закладок Opera 7.0 в IE 6.0 | AlexCom | Хочу все знать | 1 | 27-06-2004 21:31 | |
Проблема с конвертацией музыкальных CD в формат mp3 | Meister | Непонятные проблемы с Железом | 11 | 18-08-2002 02:59 |
|