这是一个最小代码示例
我试图创建一个子串数组来查找,所以我可以用一个单词替换它们。在这种情况下,我将常见的问候变成了简单的“嗨”。
问题在于,当我运行代码时,我收到了错误。
错误:没有匹配函数来调用' std :: vector> :: push_back(const char [4],const char [4],const char [3])'
如果有人可以帮助我理解为什么会出现这种错误,并建议一个完美的解决方案。
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
#include <ctime>
#include <vector>
vector<string> hiWord;
hiWord.push_back("hey", "sup", "yo");
for (const auto& word : hiWord){
while (true) {
index = r.find(word);
if (index == string::npos)
break;
r.replace(index, word.size(), "hi");
}
}
答案 0 :(得分:1)
您可能希望首先创建要搜索和替换的字符串向量:
vector<string> searchWords = {"hey", "hello", "sup"};
然后使用循环来运行您已编写的代码,例如
for (const auto& word : searchWords) {
while (true) {
index = r.find(word);
if (index == string::npos)
break;
r.replace(index, word.size(), "hi");
}
}
答案 1 :(得分:0)
您可以通过创建自己的替换功能来实现此目的
void replace(std::string &str, const std::string &token, const std::string &newToken)
{
size_t index = 0;
while((index = r.find(token, index)) != std::string::npos)
{
r.replace(index, token.length(), newToken);
}
}
//You can overload this function to take a vector, Array or whathever you like
void replace(std::string &str, const std::vector<std::string> &tokens, const std::string &newToken)
{
for(size_t i = 0; i < tokens.size(); ++i)
{
replace(str, tokens[i], newToken);
}
}
//And you can call it like this
string r("hey hello sup");
replace(r, "hey", "hi");
replace(r, {"hello", "sup"}, "hi");