Проблема работы программы на C++

Проблема заключается в программе "Шифровальщик", используется метод Цезаря,но это не главное. Главное то, что на кодировке win 1251 кириллица после отработки программы выводится нормально, но если запускать на Linux где используется кодировка UTF-8 выводится белеберда и программа в принципе работает неверно. Мои догадки, что это происходит из за того, что для кириллицы в "ASCII" используется 1 байт для одного символа кириллицы, а в UTF-8 используется 2 байта. Требуется объяснение как это исправлять и как вообще это работает. Как исправить код, чтобы программа на Linux работала верно? Притом, что латиница выводится кореектно. Код оставляю ниже:

#include <iostream>
#include <string>
#include <cstring>

using namespace std;

int main()
{
int index = 0;
string input;

cout << "Вас приветствует программа для шифрования и" << endl << "расшифрования данных." << "\n";
cout << "Нажмите Enter для начала работы: " << endl;

getchar();

cout << "Введите данные для шифровки: " << endl;
getline(cin, input);


const int number = input.size();
char cipher[number + 1];


for (int i = 0; i < number; i++)
{
    int symbol = input[index];
    symbol += 1;
    cipher[index] = symbol;
    index += 1;
    cipher[index] = 0;
}

cout << "Зашифрованные данные: " << cipher << endl << "\n";

cout << "Нажмите Enter для расшифровки данных: " << endl;
getchar();

int amount = strlen(cipher);
char decipher[amount];
index = 0;

for(int k = 0; k < 1; k++) cout << "Расшифрованные данные: ";

for (int a = 0; a < amount; a++)
{
    int mark = cipher[index];
    mark -= 1;
    decipher[index] = mark;
    cout << decipher[index];
    index += 1;
}

cout << "" << endl;
cout << "Нажмите Enter для завершения работы программы: " << endl;
getchar();

return 0;
}

введите сюда описание изображения

введите сюда описание изображения


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