Я являюсь частью команды из трех программистов со средними способностями, и в настоящее время мы пытаемся написать программу на C ++ для воплощения нашего нового алгоритма шифрования. Однако мы столкнулись с ошибкой, которая указывает на то, что в какой-то момент мы превышаем длину строки. Я сам пытался отладить это, но мне не повезло. Это в функции jumble (), хотя …
В любом случае, вот вставка нашего исходного кода с временной функцией main ():
http://pastebin.com/GvvYAsKg
Компилируется нормально, но при запуске мы получаем следующую ошибку:
прекращение вызова после выброса экземпляра ‘std :: out_of_range’
что (): basic_string :: substr
Отменено
Одна из ваших проблем в этой строке:
for(int i = 0; i < ( inPT.length() + 1 ); i++)
Это будет означать, что вы пытаетесь получить доступ inPT[inPT.length]
который является одним символом за концом строки. Ты хочешь
for(int i = 0; i < inPT.length(); i++)
или, возможно, использовать более идиоматическую конструкцию C ++, такую как std::for_each
так что вы не можете сделать такую ошибку. Как отмечалось в комментариях, запуск этого в отладчике довольно быстро показал бы это.
Предположительно этот кусок кода
if(modCount >= inPT.length())
{
modCount = 0;
}
int mod = inKey.at(modCount);
предназначен для чтения
if(modCount >= inKey.length())
{
modCount = 0;
}
int mod = inKey.at(modCount);
Ваш охранник вне доступа на inKey
использует неправильную переменную.