Проблема работы программы на 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;
}

