2021520 C++用find和replace函数找一个机器人对象
前言
今天520,在CSDN上看了一个大佬用find和replace函数写了一个对话机器人,感觉非常之妙,但是很多小伙伴还不清楚这两个函数的功能,我在这里介绍一下关于这两个函数的基本操作,看完就可以写出自己的对象机器人了。
先来个传送门,这是原版。
链接: link.
两个函数在此代码中的功能
首先是find函数,它可以判断所给字符或字符串在总字符串中第一次出现时的下标(从零开始)。
#include<iostream>
using namespace std;
int main()
{
string s;
cin>>s;
cout<<s.find("666");
//找不到时它会返回这么一个东西(string::npos)
return 0;
}
输入2021666
输出4
replace函数用法有很多,这里用的是如下功能
s.replace(1,2,"3")
这里1是替换的起始位置,2是字符长度,3是替换后内容。
例如:
#include<iostream>
using namespace std;
int main()
{
string s="学习?";
if(s.find("?")!= string::npos)//能找到
{
s.replace(s.find("?"),1,"!" );
}
cout<<s<<endl;
return 0;
}
输出:学习!
但是注意,要替换汉字时得让汉字数乘以2才是字符长度应该填的数。
例如:
#include<iostream>
using namespace std;
int main()
{
string s="学习吗?";
if(s.find("吗")!= string::npos)
{
s.replace(s.find("吗?"),3,"啊!" );//这里的3是1*2+1
}
cout<<s<<endl;
return 0;
}
输出:学习啊!
最后来波成果展示
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
while(1)
{
cout<<"ME: ";
cin>>s;
if(s.find("拜拜")!= string::npos)
{
break;
}
if(s.find("你")!= string::npos)
{
s.replace(s.find("你"),2,"name" );//这里的name可以替换成你自己的名字
}
if(s.find("我")!= string::npos)
{
s.replace(s.find("我"),2,"我也" );
}
if(s.find("抱歉")!= string::npos)
{
s.replace(s.find("抱歉"),4,"没事!" );
}
if(s.find("晚说了")!= string::npos)
{
s.replace(s.find("晚说了"),6,"哈哈哈" );
}
if(s.find("吗?")!= string::npos)
{
s.replace(s.find("吗?"),3,"!" );
}
else
{
s=s+"!";
}
cout<<"girlfriend:"<<s<<endl;
}
cout<<"girlfriend:拜拜!"<<endl;
return 0;
}
当然,知道原理后你就可以自由发挥了,让你的虚拟女友变得多才多艺起来。
当然还是有一个现实中的伉俪最好(doge)