Piszę program szyfrujący plik txt za pomocą szyfru Cezara. Przy próbnym załączeniu dla indeksu = 1 pojawia mi się błąd "string subscript out of range" przy linii którą oznaczyłem w kodzie. Czy mógłby ktoś spojrzeć gdzie mógłby być błąd?
void szyfr_cezara(fstream& in, fstream& out, int klucz) //implementacja szyfru Cezara
{
string linia_input; //tu bedziemy przechowywac poszczegolna linie tekstu z pliku wejsciowego
string linia_output; //jw. z pliku wyjsciowego
while (getline(in, linia_input)) //czytamy plik wejsciowy linia po linii
{
for (int i = 0; i < linia_input.length(); i++) //czytamy kazda litere z wczytanej linii i szyfrujemy
{
char znak = linia_input[i];
if (czy_litera(znak)) //sprawdzamy czy wczytany znak jest litera
{
if (islower(znak)) //sprawdzamy czy wczytana litera jest mala
linia_output[i] = (znak + klucz) % 26; // <- tu jest error
else
{
litera = tolower(znak);
linia_output[i] = (znak + klucz) % 26;
linia_output[i] = toupper(linia_output[i]);
}
}
else continue;
cout << linia_output;
}
out << linia_output << "\n"; //zapisujemy zaszyfrowana linie do pliku wyjsciowego
}
}