|
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
|
||||||
Ошибка C2106.20.09.2011, 23:20. Показов 10301. Ответов 39
Метки нет (Все метки)
Здравствуйте, при попытке символьному элементу структуры (char name [30]) присвоить такой же символьный элемент выдается ошибка C2106 - левый операнд должен быть левосторонним значением. Вот фрагмент листинга, на всякий случай с описанием самой структуры:
0
|
||||||
| 20.09.2011, 23:20 | |
|
Ответы с готовыми решениями:
39
Выдает: Ошибка C2296 Ошибка C2106 Error C2106 как обойти? Error C2106: '=' : left operand must be l-value |
|
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
|
|
| 21.09.2011, 00:03 [ТС] | |
|
0
|
|
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
||
| 21.09.2011, 00:05 | ||
|
1
|
||
|
|
||||||
| 21.09.2011, 00:08 | ||||||
|
BoBaH26, первый аргумент - то, куда, копируете, второй - то, откуда.
Добавлено через 2 минуты вот, например
Видите, как типы определяются компилятором?
1
|
||||||
|
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
|
|
| 21.09.2011, 00:11 [ТС] | |
|
talis, вот именно этого я пока и не понял. Ведь char hello[30] мы можем заполнить с помощью ввода: cin>>hello; Так почему нельзя присвоить ему это значение "asdasd"?
0
|
|
|
|
|
| 21.09.2011, 00:14 | |
|
BoBaH26, при вызове cin >> hello реально происходит вызов функции:
istream & operator>>( istream & is, char * buffer ); И hello попадает в неё в качестве второго параметра, а cin - в качестве первого. Из-за близости природы идентификаторов массива и указателя (оба "указывают" на начало какого-то куска памяти), считается нормальным преобразовывать char[30] в char*, передавая в качестве указателя адрес на первый элемент массива char.
1
|
|
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
| 21.09.2011, 00:17 | |
|
BoBaH26
Это называется перегрузкой операции. Можно почитать об этом где-нибудь.
1
|
|
|
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
|
|
| 21.09.2011, 00:21 [ТС] | |
|
Спасибо, буду пробовать делать через указатель, т.к. такой способ: strcpy (min.name, MasList[i].name); Мне какжется не рабочим, ибо мы делаем то же самое, что и при присваивании. Мы константе min.name хотим придать значение MasList[i].name?
0
|
|
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
||
| 21.09.2011, 00:24 | ||
|
Вам надо присвоить name[i] = MasList[i].name[i] , где i = 0,1,2...размер массива -1 Причем можно не весь массив копировать, а ту часть, которая находится до нуль символа и нуль символ тоже не забыть захватить.
0
|
||
|
|
|||||||
| 21.09.2011, 00:25 | |||||||
0
|
|||||||
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
||
| 21.09.2011, 00:28 | ||
|
0
|
||
|
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
|
|
| 21.09.2011, 00:35 [ТС] | |
|
Chelioss, так мне не желательно делать name[], т.к. программа большая, а с таким способом задания символьного массива name, будет на порядок труднее, поэтому я могу делать только так: min.name, т.е. должен рассматривать не как массив, а как строку, поэтому здесь скорее подойдет строковая функция копирования strcpy.
talis, я знаю С++ не очень хорошо, пока только начал, поэтому о чем идет речь в этой функции: char *strcpy( char * dest, const char * src ) не знаю.. Добавлено через 1 минуту Chelioss, так мне не желательно делать name[], т.к. программа большая, а с таким способом задания символьного массива name, будет на порядок труднее, поэтому я могу делать только так: min.name, т.е. должен рассматривать не как массив, а как строку, поэтому здесь скорее подойдет строковая функция копирования strcpy. talis, я знаю С++ не очень хорошо, пока только начал, поэтому о чем идет речь в этой функции: char *strcpy( char * dest, const char * src ) не знаю.. Добавлено через 2 минуты Chelioss, не ну самое элементарное я знаю, как присваивать в цикле элементы массиву.. Просто со строками пока туговато..
0
|
|
|
|
|
| 21.09.2011, 00:39 | |
|
BoBaH26, как присваивать строки:
присваиваете элементы массива, пока значение элемента исходного массива не станет равно нулю (не достигните нуль-терминатора). как вариант - с учётом длин массивов, но особого смысла не имеет, если только конечный массив не меньше исходного.
1
|
|
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
| 21.09.2011, 00:40 | |
|
Без функции strcpy не обойтись. Можно, конечно, воспользоваться функцией memcpy, только хрен редьки не слаще.
1
|
|
|
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
|
|
| 21.09.2011, 00:43 [ТС] | |
|
Большое Вам спасибо, завтра буду пробовать.
0
|
|
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
||
| 21.09.2011, 00:44 | ||
|
Да и пример использования этой функции на cplusplus.com использует именно строки)
0
|
||
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
| 21.09.2011, 00:48 | |
|
Да и можно не копировать всю строку функцией memcpy) Можно только до нуля и включая нуль.
0
|
|
|
|
|
| 21.09.2011, 00:50 | |
|
Ну так чем strcpy и занимается. А есть ещё strncpy, которой можно скопировать либо до достижения нуль-терминатора, либо до достижения определённого количества скопированных символов (что раньше произойдёт). Это поможет спастись от переполнения буфера.
0
|
|
| 21.09.2011, 00:50 | |
|
Помогаю со студенческими работами здесь
40
Error C2106: '=' : left operand must be l-value error C2106: '=' : left operand must be l-value выдаёт ошибку на сортировку Функция swap. error C2106: =: левый операнд должен быть левосторонним значением Error C2106 или error C2440
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|