我正在用C++编写一个小型聊天机器人程序
现在,我有一种功能,让机器人可以编写用户对文件brain.txt说的任何内容,并在文件旁边放置一个数字,以便于记忆。继续,输入用户输入Grapefruit将把葡萄柚放在新的行上,6作为前缀。
0 suspect
1 interest
2 underwood
3 interior
4 bullet
5 dog我遇到了一个问题,我需要将用户输入与机器人之前的用户输入的内存进行比较。
ifstream brain ("projects/AI/brain.txt");
if (brain.is_open())
{
while ( getline(brain,memory))
{
cout << "memory: " << memory << endl;
cout << "userinput: " << userinput << endl;
if (memory == userinput)
{
exists = true;
//if it exists, tell the user, and break
cout << "I know that already!" << endl;
break;
}
else { filepos++; }如果用户输入是grapefruit,那么机器人的内存是6 grapefruit ergo,如果它比较这两者,比较检查就会失败,因为它们不是相同的字符串。
我希望数字仍然是字符串的一部分,并且我能够有选择地选择要读取的字符串的一部分。稍后我可能会升级到JSON或类似的东西,但是现在,我想这样做。
grapefruit和grapefruit而不是6 grapefruit例如,在字符串:6葡萄柚23 53 12,我想访问数字53,没有其他。
改进的方法和我可能做错了的方法?
我本可以在程序启动时在运行时将其提升为元组或什么的向量,从而阻止我从文件中访问。这是我将来可能会做的事。
发布于 2016-12-17 05:31:24
如果您的字符串存储在std:string对象中,则可以使用find方法()来确定内存字符串包含在输入字符串中。
string/find
if (memory.find(userinput) != std::string::npos)
{
exists = true;
//if it exists, tell the user, and break
cout << "I know that already!" << endl;
break;
}string : no被定义为一个特殊字符,在本例中表示在字符串结束之前没有找到匹配的字符。
string/npos
https://stackoverflow.com/questions/41195490
复制相似问题