![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Вопрос в следующем.
У меня есть вектор байт vecByte [8](84 'T',0,101 'e',0,120 'x',0,116 't',0) std::vector<unsigned char,std::allocator<unsigned char> > Как мне из него получить указатель на TCHAR? Если делаю:
Как мне победить это? Понимаю что торможу, но не пойму где -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
А TCHAR-то у тебя какой, может 2-байтовый? а ну да, wchar_t. Тогда скопируй:
std::vector <TCHAR> vec (vecByte.begin(), vecByte.end()); -------------------- ... |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Скопировал
+ vec [8](84 L'T',0,101 L'e',0,120 L'x',0,116 L't',0) std::vector<wchar_t,std::allocator<wchar_t> > Получаю
-------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
сделай
и все будет нормально |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 3 Всего: 32 |
ИМХО итератор надо разыминовать, а потом взять адрес
не хочу проверять. Но ведь итератор не есть указатель. -------------------- ![]() |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Стой, у тебя же уже в байтовом векторе двух-байтовые символы лежат, нулями перемежаясь... сразу не обратила внимания.
Так что в первый раз ты все сделал правильно (когда просто приведение сделал). Но: после 4 правильных символов идет мусор, вот и все. А ты что, думал, терминальный нуль кто-то добрый туда поставит? Так что память у тебя правильная, но пользоваться как c-строкой нельзя, пока не добавишь еще пару нулей в исходный вектор -------------------- ... |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
... ибо строки должны заканчиваться нулевым символом
Это сообщение отредактировал(а) Alek86 - 8.7.2009, 16:22 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Alek86 уже написал.
Добавлено через 1 минуту и 41 секунду Cheloveck, front не итератор возвращает, а ссылку на элемент, так что все правильно написано. -------------------- ... |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
front() возвращает reference Добавлено через 54 секунды Earnest, гонки у нас... 1:1 |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 3 Всего: 32 |
а, ну тады правильно. -------------------- ![]() |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Спасибо девочки и мальчики
Наверное я вчера не выспался. Хотя пришел домой и все заработало. Вспомнил о С строках. -------------------- ????? ??, ??????? ?????. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |