Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mgauk
27 / 27 / 1
Регистрация: 03.01.2011
Сообщений: 85
#1

'const char[i]' to 'char[j]' - C++

04.01.2011, 04:51. Просмотров 1007. Ответов 4
Метки нет (Все метки)

Привет всем.
Усердно изучаю плюсы по Стивену Пратта. В ходе изучения возник вопрос, который в книге не освящён.
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
struct bob {
       char name[50];
};
 
int main() {
    bob * ranch = new bob[20];
    ranch[0].name = "Hello!";
    return 0;
}
Почему ranch[0].name = "Hello!"; выбивает ошибку
10 C:\Documents and Settings\Admin\Мои документы\char.cpp incompatible types in assignment of `const char[7]' to `char[50]'
???

Такой вот теоретический вопрос к знатокам С++.
Причём если использовать не (динамический) массив структур, а одну структуру присваивается всё нормально.
Заранее благодарен за помощь. Просто не даёт покоя этот вопрос - дальше учу, а неприятный осадок остаётся от непонимания

PS: Среда Dev-C++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2011, 04:51     'const char[i]' to 'char[j]'
Посмотрите здесь:

из char в const char? C++
C++ conversion from ‘char’ to ‘const char*’
'const char* ...' does not much 'const char*' ??? C++
Конструктор с const char C++
const char *[] в функции C++
Количество символов в const char* C++
char и const char C++
Const char* to char* C++
C++ Const *char с клавиатуры
C++ Из string в const char
C++ Несовместимые типы операндов "char" и "const char*"
C++ Std::string в const char*

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NightmareZ
1339 / 562 / 37
Регистрация: 31.03.2009
Сообщений: 1,918
04.01.2011, 05:00     'const char[i]' to 'char[j]' #2
Цитата Сообщение от Mgauk Посмотреть сообщение
Привет всем.
Усердно изучаю плюсы по Стивену Пратта. В ходе изучения возник вопрос, который в книге не освящён.
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
struct bob {
       char name[50];
};
 
int main() {
    bob * ranch = new bob[20];
    ranch[0].name = "Hello!";
    return 0;
}
Почему ranch[0].name = "Hello!"; выбивает ошибку

???

Такой вот теоретический вопрос к знатокам С++.
Причём если использовать не (динамический) массив структур, а одну структуру присваивается всё нормально.
Заранее благодарен за помощь. Просто не даёт покоя этот вопрос - дальше учу, а неприятный осадок остаётся от непонимания

PS: Среда Dev-C++
Замени
C++
1
char name[50];
на
C++
1
char* name;
А, вообще, конечно, лучше на
C++
1
const char* name;
либо оставив массив
C++
1
char name[50];
копируй в него
C++
1
strcpy(ranch[0].name, "Hello!");
А, если быть ещё более придирчивым, то: раз пишешь на C++, может уж лучше использовать std::string?
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
04.01.2011, 05:13     'const char[i]' to 'char[j]' #3
И заодно использовать вектор а не динамический массив.
igorrr37
1636 / 1264 / 129
Регистрация: 21.12.2010
Сообщений: 1,925
Записей в блоге: 7
04.01.2011, 05:45     'const char[i]' to 'char[j]' #4
>Почему ranch[0].name = "Hello!"; выбивает ошибку

имя массива является константным указателем, а ты пытаешься его перенаправить на массив "Hello!"
Mgauk
27 / 27 / 1
Регистрация: 03.01.2011
Сообщений: 85
05.01.2011, 03:19  [ТС]     'const char[i]' to 'char[j]' #5
Всем спасибо за ответы


Цитата Сообщение от NightmareZ Посмотреть сообщение
Замени
C++
1
char name[50];
на
C++
1
char* name;
А, вообще, конечно, лучше на
C++
1
const char* name;
либо оставив массив
C++
1
char name[50];
копируй в него
C++
1
strcpy(ranch[0].name, "Hello!");
Так и делаю, просто была интересна теоретическая сторона моей ошибки

А, если быть ещё более придирчивым, то: раз пишешь на C++, может уж лучше использовать std::string?
Ещё не дочитал до стрингов
Yandex
Объявления
05.01.2011, 03:19     'const char[i]' to 'char[j]'
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru