Приравнять строку и элемент вектора

Пытаюсь реализовать Азбуку морзе на с++, не могу понять, как сделать замену в этом куске

for (int i = 0; i < message.size(); i++)
    {
        message[i] = azbuka[M[i]];
    }

Пишет " не существует подходящей функции преобразования из "std::string" в "char" " Не понимаю, что нужно сделать. Вот весь код

void eMorze(string& message)
{
    string alphabet = "абвгдежзийклмнопрстуфхцчшщъыьэюя";
    vector<string> azbuka = { "•-","-•••","•--","--•","-••","•","•••-","--••","••",
    "•---","-•-","•-••","--","-•","---","•--•","•-•","•••","-","••-","••-•","••••",
    "-•-•","---•","----","--•-","•--•-•","-•--","-••-","•••-•••","••--","•-•-"};
    int* M = new int[message.size()];
    for (int i = 0; i < message.size(); i++)
    {
        for (int j = 0; j < alphabet.size(); j++)
        {
            if (message[i] == alphabet[j])
            {
                M[i] = j;
            }
        }
    }
    for (int i = 0; i < message.size(); i++)
    {
        message[i] = azbuka[M[i]];
    }

Ответы (1 шт):

Автор решения: вася

std::string - контейнер символов char. А вы в строке message[i] = azbuka[M[i]]; пытаетесь присвоить char тип std::string.

Варианты:

  1. Сделать message такого же типа, что и azbuka.

  2. Расширять строку message с помощью, например, оператора +=.

→ Ссылка