![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
wallstreet |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.8.2011 Репутация: нет Всего: нет |
Всем доброго дня.
Принимаю данные Unicode в массив, потом пытаюсь добавить в вектор, но если объявить массив как WCHAR и тип данных вектора как WCHAR, то происходит ошибка С2664 (Error 2 error C2664: 'void std::vector<_Ty>::push_back(_Ty &&)' : cannot convert parameter 1 from 'WCHAR [200]' to 'WCHAR &&' c:\users\a.gursky\documents\visual studio 2010\projects\ddeserver\ddeserver\ddemlfn.cpp 165)
Подскажите как можно исправить ошибку? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
wallstreet, в строке 8 у тебя происходит проверка, которая всегда верна. Так как массив ВСЕГДА не равен NULL.
А в строке 10 ты пытаешь добавить к вектору не один элемент, а целый массив. Естественно, что push_back такому не обучен. Воспользуйся vector::insert - он умеет работать с итераторами и указателями (читай массивами). |
|||
|
||||
wallstreet |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.8.2011 Репутация: нет Всего: нет |
Вот так вот работает
Это сообщение отредактировал(а) wallstreet - 6.12.2011, 12:24 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
wallstreet, в первой строчке нового кода условие всегда истинно. Оно не отличается от предыдущего варианта. Думаю, тебе стоит хорошенько подумать о том, зачем условие вообще нужно.
|
|||
|
||||
wallstreet |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.8.2011 Репутация: нет Всего: нет |
Да, конечно.
Кстати не могу найти функцию определяющую размерность массива. Т.е. что-то вроде strlen() для строк. Есть ли такая? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
проблема не в массиве, а в его типе. для юникодовых строк следует использовать wcslen.
|
|||
|
||||
Andrey44 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Это сообщение отредактировал(а) Andrey44 - 6.12.2011, 15:35 -------------------- ????? ??, ??????? ?????. ![]() |
||||
|
|||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
wallstreet |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.8.2011 Репутация: нет Всего: нет |
Что такое шорты?)) |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
short int
|
|||
|
||||
wallstreet |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.8.2011 Репутация: нет Всего: нет |
что бы выводилась дата в 16 ричном виде правильным ли будет такой вариант?
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
wallstreet, тебе религия документацию читать запрещает?
![]() |
|||
|
||||
wallstreet |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.8.2011 Репутация: нет Всего: нет |
Вот блин ошибся, перепутал все на свете. ХОтел вот так вот вывести:
Но вопрос в скорее в другом. Правильно ли вобоще использовать данные модификаторы вывода чисел? Или есть более универсальные функции? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
правильно. Вот только я бы тебе рекомендовал явно преобразовать *it в целочисленный тип. А то однажды может получиться, что будут выводиться символы вместо их кодов.
|
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Ну выведет теперь в шест.-ном виде. Например вместо юникодной буквы 'Ж', в файл уйдет: "42F" и перевод строки следом, вы этого хотите ?
bsa, мне кажется, (телепатирую) что автор именно это и хочет. то есть что-то типа: out << (char)*it << (char)(*it>>8) << '\n'; непонятно только зачем после каждой буквы всавлять перевод строки (да еще не юникодный) ... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |