отладка — ошибка Vigenere Cipher в переполнении стека

Я создаю шифр Vigenere в C ++, и когда я запускаю код, появляется сообщение об ошибке: (Нажмите «Повторить» для отладки приложения)
ConsoleApplication2.exe вызвал точку останова.
Ошибка отладки!
Программа: C: \ Windows \ system32 \ MSVCP140D.dll
Файл: c: \ program files (x86) \ Microsoft Visual Studio 14.0 \ vc \ include \ xstring
Линия: 1681
Выражение: строковый индекс вне диапазона
Для получения информации о том, как ваша программа может вызвать утверждение
ошибка, см. документацию по Visual C ++ для подтверждений.
(Нажмите «Повторить» для отладки приложения)
ConsoleApplication2.exe вызвал точку останова.
Программа «[3668] ConsoleApplication2.exe» вышла с кодом -1073741510 (0xc000013a).

вот код:

#include <iostream>
#include <string>
#include "stdafx.h"

using namespace std;
int main()
{
string plaintext, key, Result;
int k = 0;
cout << "Enter the plain text: ";
cin >> plaintext;
cout << "Enter the key word: ";
cin >> key;

for (int i=0; i<plaintext.length(); i++)
{
Result[i] = (((plaintext[i] - 97) + (key[k] - 97)) % 26) + 97;
k++;
if (k == 6)
(k = 0);
}

cout << "    \n\n\n";
for (int i=0; i<plaintext.length(); i++)
cout <<" "<< Result[i];
cout << "\n\n\n\n";

return 0;
}

Ошибка в заявлении for for (int i=0; i<plaintext.length(); i++)это что-то говорит о < подписать и я не знаю почему. Любая помощь? Спасибо 🙂

0

Решение

Вы никогда не устанавливаете размер для Result так что любой i вы используете в

Result[i] = (((plaintext[i] - 97) + (key[k] - 97)) % 26) + 97;

является недействительным. Вы должны сначала установить размер для Result, Вы могли бы использовать что-то вроде

string plaintext, key, Result;
int k = 0;
cout << "Enter the plain text: ";
cin >> plaintext;
cout << "Enter the key word: ";
cin >> key;
Result.resize(plaintext.size());
//...
0

Другие решения

В заявлении

key[k]

Как вы проверяете, что индекс k < key.length() ? Переменная k ограничен в [0,5], но откуда вы знаете, что key.length () < 5′ ?

0

По вопросам рекламы [email protected]