gpt4 book ai didi

c++ - 在我的C++ CaesarCipher程序中出现错误

转载 作者:行者123 更新时间:2023-12-03 09:12:01 24 4
gpt4 key购买 nike

我正在尝试在c++中创建一个凯撒密码,但是在尝试构建该程序时却不断出现此错误,有什么帮助吗?
我收到的错误如下:

terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_M_construct null not valid Aborted (core dumped)



这是代码:
#include <stdio.h> 
#include <iostream>
#include <string>

using namespace std;

string caesarCipher(string text, int ciphe);

int main(void) {
string text, encodedString;
int ciphe = 0;
cout << "Please enter a word: ";
getline(cin, text);
cout << "Key: ";
cin >> ciphe;

encodedString = caesarCipher(text, ciphe);
cout <<"Encrypted: " << encodedString << "\n";

return 0;
}

string caesarCipher(string text, int ciphe)
{
string temp = text;
int length;

length = (int)temp.length();

for (int i = 0; i < length; i++)
{
if(isalpha(temp[i]))
{
for (int x = 0; x < ciphe; x++)
{
if (temp[i] == 'z')
{
temp[i] = 'a';
}
else
{
temp[i]++;
}
}
}
}

return 0;
}

最佳答案

实际上,除了caesarCipher例程中存在一个小错误外,此代码没有遇到任何编译错误。

您必须实际返回temp字符串而不是0才能获得正确的答案。

正确的代码应该是

string caesarCipher(string text, int ciphe)
{
string temp = text;
int length;

length = (int)temp.length();

for (int i = 0; i < length; i++)
{
if(isalpha(temp[i]))
{
for (int x = 0; x < ciphe; x++)
{
if (temp[i] == 'z')
{
temp[i] = 'a';
}
else
{
temp[i]++;
}
}
}
}

return temp;
}

关于c++ - 在我的C++ CaesarCipher程序中出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46931122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com