gpt4 book ai didi

C++ 程序已停止工作

转载 作者:行者123 更新时间:2023-11-28 00:51:28 25 4
gpt4 key购买 nike

我正在制作一个非常简单的程序,只是一个聊天机器人 AI 之类的东西,我有一些代码,当然是 C++,用于该程序。我没有收到任何错误,但是当我运行它时会出现一个窗口,说 program.exe 已停止工作,就像它停止响应一样。我的代码是:

#include<iostream>
#include<string.h>
#include<cmath>
#include<vector>
#include<ctime>
#include<conio.h>
#include<algorithm>
#include<cstdlib>
using namespace std;

struct strarray{
char* array[];
};

struct keyword{
string keywords;
string responses[];
};


keyword * dictionary = new keyword[2];
keyword defaultr;

keyword getMatch(string key);
string sconvert(string con);
void init();
string getResp(keyword key);

bool cont=true;

int main(int argc, char* argv[]){
string input;
while(cont){
getline(cin,input);
cout << getResp(getMatch(input));
getch();
getch();
}
}

string sconvert(string con){
con.erase(remove_if(con.begin(), con.end(), ::isspace), con.end());
con.erase(remove_if(con.begin(), con.end(), ::ispunct), con.end());
return con;
}

void init(){
srand(time(NULL));
dictionary[0].keywords="hello";
dictionary[0].responses[0]="Hello, how have you been?";
dictionary[0].responses[1]="Hello, have you missed me?";
dictionary[0].responses[2]="Hey, how's it going?";
defaultr.responses[0]="That's interesting, tell me more.";
defaultr.responses[1]="Please, tell me more.";
}

keyword getMatch(string key){
for(int i=0; i<sizeof(dictionary); i++){
if(key==dictionary[i].keywords){return dictionary[i];}
}
return defaultr;
}

string getResp(keyword key){
return key.responses[rand() % sizeof(key)];
}

当我运行它时,它可以正常打开,但是当我输入一些东西后它出现时它“停止工作”。有人可以告诉我我需要更改什么吗?为什么会不胜感激。

指针有问题吗?或者带有 rand 的东西?我真的很困惑,希望能就如何改进该程序以使其实际运行提供一些建议。

最佳答案

sizeof(dictionary) 将给出 sizeof(keyword*),可能是 48,所以你将遍历字典数组的末尾并终止。

最简单的解决方法:定义一个常量来存储数组长度。

const dictionarySize = 2;

并在整个过程中使用它。

您还需要将 struct keyword 更改为:

struct keyword{
string keywords;
string responses[3];
};

关于C++ 程序已停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13869558/

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