![]() |
|
|
![]()
|
|
| War_Chief |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 10.7.2007 Где: Украина,Киев Репутация: нет Всего: нет |
Всем привет!
Есть проблемка которую надо решить: у меня допустим есть переменная
в нее вводится(с клавиатуры) имя файла а затем с помощью функции
старый файл по адресу N копируется в новый по адресу fn. Соответственно компилятор меня послал к LPCWSTR. Вопрос : как сделать переменную типа LPCWSTR (или TCHAR)и затем скопировать в нее первую часть адреса например "Е:\\" и к етому присоединить значение переменной fn? Различие между Unicode и ANCII я понял но как переводить одно в другое так и не разобрал! Зарание спасибо! |
||||
|
|||||
| BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: нет Всего: 10 |
LPCWSTR и TCHAR -- вещи разные. Тип TCHAR зависит от типа проекта (_MBCS/UNICODE). Если используешь TCHAR, то использовать char/wchar_t без крайней необходимости не стоит.
WideCharToMultiByte/MultiByteToWideChar CRT'шные -- wcstombs/mbstowcs -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: нет Всего: 162 |
функции wcstombs, mbstowcs |
|||
|
||||
| War_Chief |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 10.7.2007 Где: Украина,Киев Репутация: нет Всего: нет |
Выбивает из програмы! Что я напутал в параметрах функции? JackYF
Это сообщение отредактировал(а) War_Chief - 18.1.2008, 23:11 |
||||||
|
|||||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: нет Всего: 162 |
ещё знал бы я, что это за дребедень... назовут же тип Значит, юзай виндовые функции. |
|||
|
||||
| War_Chief |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 10.7.2007 Где: Украина,Киев Репутация: нет Всего: нет |
Тут я с тобой согласен название весьма привлекательное)) Но функции WideCharToMultiByte/MultiByteToWideChar компилируются нормально а потом выкидывают из програмы с ошибкой! |
|||
|
||||
| BorisVorontsov |
|
||||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: нет Всего: 10 |
Советую найти дистрибутив MSDN (2001 или новее) и установить. Вопросы такого рода отпадут.
Товарищ, вы откуда к нам? Кстати, зачем дублировать мой ответ? Добавлено через 10 минут и 30 секунд
Во-первых, LPCWSTR -- константная строка, а здесь, как и в случае с MultiByteToWideChar, в буфер будет возвращена строка. Поэтому тип должен быть LPWSTR. И указатель по хорошему надо инициализировать нулем. Во-вторых, на будущее, приведение типов тебе знакомо? Делается _cast-операторами или ()-оператором. -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
||||
|
|||||
| War_Chief |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 10.7.2007 Где: Украина,Киев Репутация: нет Всего: нет |
BorisVorontsov,
Да с приведением типов я знаком. Я нашол в MSDN пример и зделал так:
BorisVorontsov, огромное спасибо. Тему закрываю. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |