/*
* func: 将src字符串根据split_string为关键拆分并得到一个vector容器
* src: 源字符串
* split_string: 关键字符串
* return: vector容器
*/
std::vector<std::string> split_string(std::string src, const std::string &split_string) {
std::vector<std::string> gstr;
try{
while(src.find_first_of(split_string) != std::string::npos) {
gstr.push_back(src.substr(0,src.find_first_of(split_string)));
src.erase(0,src.find_first_of(split_string)+split_string.length());
}
gstr.push_back(src);
}catch(std::exception &e) {
std::cerr << e.what() << std::endl;
}
return gstr;
}
/*
* func: 获取完整的字符串
* src:源字符串
* tem:暂存,将被其他代替
* sub:替代字符串
*/
std::string get_full_speech(std::string &src,const std::string &tem,std::string &sub) {
std::string res;
try{
if(src.find(tem.c_str()) != std::string::npos) {
src.replace(src.find(tem.c_str()),tem.length(),sub);
}
}catch(std::exception &e) {
std::cerr << e.what() << std::endl;
}
res = src;
return res;
}
测试程序
void start() {
std::string str = "你好,%需要什么服务///天气怎么样///我叫%,你们知道吗///大河治水%来,带我";
std::vector<std::string> vv = split_string(str,std::string("///"));
for(int i = 0 ; i < vv.size(); i ++)
{
std::string src = vv[i];
std::cout << src << std::endl;
std::string sub = "帅哥";
std::string rel = get_full_speech(src,std::string("%"),sub);
std::cout << rel << std::endl;
}
}
输出结果:
你好,%需要什么服务
你好,帅哥需要什么服务
天气怎么样
天气怎么样
我叫%,你们知道吗
我叫帅哥,你们知道吗
大河治水%来,带我
大河治水帅哥来,带我