![]() |
|
|
![]()
|
|
| denis2105 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.12.2006 Репутация: нет Всего: нет |
CString m_EFname="qwerty"; char str[2][10]; *str[0]=m_EFname.GetBuffer(m_EFname.GetLength()); Пишет :error C2440: '=' : cannot convert from 'char *' to 'char' Что делать? Где косяк? |
|||
|
||||
| Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 10 Всего: 18 |
-------------------- Подпись больше не нужна |
|||
|
||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: нет Всего: 88 |
Добавлено через 8 минут и 45 секунд Не, опять что-то не то. Видать ещё не отошёл от вчерашнего. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 10 Всего: 25 |
Разберем по порядку.
error C2440: '=' : cannot convert from 'char *' to 'char' Означает не могу преобразовать указатель на char к char. Оно и понятно, ведь str[0] есть ни что иное как char (*) [10], т.е указатель на массив из 10-ти элементов char. Разадресуя его мы получим его первый элемент, тип которого будет char. 2-я часть выражения m_EFname.GetBuffer( возвращает указатель на char. Кстати указание аргумента в функции GetBuffer означает желание изменить размер буфера - урезать или расширить. Если вы хотели просто получить адрест C-cтроки объекта CString, то надо для старых mfc (vs6.0) писать GetBuffer(0), для новых (vs8.0) GetBuffer(). т.е вообще опускать аргумент. Получаем просьбу присвоить char = char *. Но ваша пробелема не решится даже если типы и соответствовали, т.е вы написали str[0]=m_EFname.GetBuffer(. Было бы "lvalue required". Дело в том что в с операция = не может быть применена к типу data_type [N], т.е массиву. То что вы хотите можно сделать с помощью функции strcpy(). Ну и напоследок хочу сказать, что я давно пользуюсь CString и не помню чтобы возникала необходимость перегонять ее содержимое в chаr *. Вам зачем это нужно? Добавлено через 12 минут и 8 секунд
Есть! я разобрался как цитировать конкретного человека. Точно от вчерашнего. Вся полезная работа твоего примера сводится к изменению значения переменной p. Человек же хочет скопировать содержимое книги "Война и Мир", что можно сделать как верно заметил Greeen, сишной функцией strcpy(). |
|||
|
||||
| denis2105 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.12.2006 Репутация: нет Всего: нет |
все разобрался
strcpy_s(str[0],m_EFname); Добавлено через 2 минуты и 3 секунды Вам зачем это нужно? Так просто=)) |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
не всегда denis2105, а что такое strcpy_s? Это сообщение отредактировал(а) zkv - 14.4.2007, 13:21 |
|||
|
||||
| denis2105 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.12.2006 Репутация: нет Всего: нет |
strcpy_s тоже что и strcpy но с какой-то защитой буфера.
MVS 2005 ругается на strcpy, мол это функция морально устарела. |
|||
|
||||
| dizzy1984 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 10 Всего: 25 |
_s означает secured, т.е безопасный. Такие функции осуществляют проверку длины строки для защита от взлома.
не всегда
Формально нет, но используя здравый смысл. В коде зашита нерасшеренная строка "qwerty". Косвенно на отсутствие юникода в программе наводит и использование char вместо TCHAR. Greeen, решает, это так |
||||
|
|||||
| Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 10 Всего: 18 |
-------------------- Подпись больше не нужна |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |