用C++现需要实现了一个简单的循环对话机器人。如果用户输入“quit”,就结束对话,否则每读入一个问题后,在"你问得好,我得好好想一想。","是的,你说得对。","不,我不同意你的看法。"三句话中随机选一句话进行回答。但当用户输入的语句中包含了中文或英文问号,那么就回答"你问得好,我得好好想一想。",请设计一个chat类来实现上述功能,并测试其功能。
时间: 2024-04-22 22:27:54 浏览: 100
下面是一个用C++实现的简单循环对话机器人的示例代码:
```cpp
#include <iostream>
#include <string>
#include <ctime>
class ChatBot {
public:
void start() {
std::string userInput;
while (true) {
std::cout << "用户: ";
std::getline(std::cin, userInput);
if (userInput == "quit") {
break;
}
std::string response = generateResponse(userInput);
std::cout << "机器人: " << response << std::endl;
}
}
private:
std::string generateResponse(const std::string& userInput) {
if (containsChineseOrEnglishQuestionMark(userInput)) {
return "你问得好,我得好好想一想。";
}
srand(time(0));
int random = rand() % 3;
switch (random) {
case 0:
return "你问得好,我得好好想一想。";
case 1:
return "是的,你说得对。";
case 2:
return "不,我不同意你的看法。";
default:
return "";
}
}
bool containsChineseOrEnglishQuestionMark(const std::string& input) {
for (char c : input) {
if (c == '?' || c == '?') {
return true;
}
}
return false;
}
};
int main() {
ChatBot chatBot;
chatBot.start();
return 0;
}
```
你可以在 `main` 函数中创建 `ChatBot` 对象并调用 `start` 方法来开始对话。用户输入的问题会通过 `getline` 函数读取,并根据输入的内容生成回答。如果输入为 "quit",则对话结束。
在 `generateResponse` 方法中,我们使用 `srand` 和 `rand` 函数来生成一个随机数,然后根据随机数的值选择回答的句子。如果用户输入的语句中包含了中文或英文问号,则直接返回固定的回答。
请注意,这只是一个简单的示例,可能无法处理复杂的对话场景。你可以根据自己的需求进行修改和扩展。
阅读全文