Не могу вывести переменную char

У меня есть кнопка, при нажатии на которую, слово должно шифроваться Цезарем и выводиться в textBox3, но слово нельзя вывести из-за "отсутствия операнда "+" ", но указатель выводится. В чём проблема?

   private: System::Void button1_Click_2(System::Object^ sender, System::EventArgs^ e) {
    char buffer[256]; int shift = Convert::ToDouble(textBox2->Text);
    for (int i = 0; i < strlen(buffer); i++)
        buffer[i] += shift;
    textBox3->Text += "\r\n Слово: " + buffer;

}

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

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

Нельзя складывать C-строки, нужно чтобы хотя бы одна была типа std::string

textBox3->Text += "\r\n Слово: " + std::string(buffer);
→ Ссылка
Автор решения: DmitryK

Что-то тут всё наперекосяк.

  • У вас в буфере нет строки - какие именно данные вы сдвигаете?
  • Почему конвертация в double, а потом сразу приведение типа к int?
  • strlen(buffer) работает, если там есть какие-то данные, ограниченные 0. Если в этом случайном наборе байтов нет 0, то это - выход за пределы массива.
  • в шифре Цезаря сдвиг циклический, а не просто увеличить всё на какое-то число, как в этом коде - вы получите абракадабру
  • операции +, += есть у объектов типа string. Создайте объекты string из строк - textBox3->Text += string("\r\n Слово: ") + string(buffer);
{
    char buffer[256];  // создан пустой буфер - без данных
    int shift = Convert::ToDouble(textBox2->Text); // конвертация в `double` и приведение типа к `int` по-умолчанию
    for (int i = 0; i < strlen(buffer); i++) // в буфере неизвестные данные
        buffer[i] += shift;
    textBox3->Text += "\r\n Слово: " + buffer;
}
→ Ссылка