|
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
|
||||||
Ошибка C2106.20.09.2011, 23:20. Показов 10703. Ответов 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 | |
|
Error C2106: '=' : left operand must be l-value error C2106: '=' : left operand must be l-value выдаёт ошибку на сортировку Функция swap. error C2106: =: левый операнд должен быть левосторонним значением Error C2106 или error C2440
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы.
Карта этого меню приложена ниже.
Нужный пункт выделен красным.
Сервис
Настройки
Поведение
|
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки.
Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён".
Изменено отображение буквы Й.
Добавлена. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|