C ++: Почему я получаю ошибку: «инициализатор массива должен быть списком инициализатора или строковым литералом»? - PullRequest
0 голосов
/ 13 сентября 2018

только что начал с C ++.Играл с массивами и строками и обнаружил ошибку: «инициализатор массива должен быть списком инициализатора или строковым литералом».Вот мой код:

#include<string>
using namespace std;

bool feast(string beast, string dish){
    int dishLn = dish.length();
    bool elig;
    char beastM[] = beast;
    char dishM[] = dish;

    elig = (beastM[0] == dishM[dishLn - 1]) ? true : false;

    return elig;
}

Что я хочу сделать, это проверить, равен ли первый символ из строки зверя последнему символу из строки блюда , затем выведите true , иначе false .Поэтому я конвертирую строку зверя в массив из символов , а затем проверяю их первый элемент для обоих beast и dish .

Но я продолжаю сталкиваться с этой ошибкой.

Ошибка соответствует char beastM [] и char dishM [] .Насколько мне известно, этот код должен работать, так как beast и dish представлены в виде строк в параметрах функции.И преобразование их в массив символов не должно быть большой проблемой.

Вся помощь приветствуется.

Приветствия!

1 Ответ

0 голосов
/ 13 сентября 2018

Вы не можете напрямую присвоить строку массиву символов

bool feast(string beast, string dish){

    bool elig;

    elig = (beast.at(0) == dish.at(dish.length() - 1) ? true : false;

    return elig;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...