首先,我想为我糟糕的英文写作道歉。 我的问题是:例如我们有很多句子,在这组单词中,一些单词必须替换为其他单词,如下所示:
在这个凉爽的日子里,去公园玩得很开心,玩得很开心。
改变后的字符串变成这样:
在这美好的一天,去公园和玩酷足球真是太好了。
当你看到“完美”这个词取代“那么好”并且这部分并不困难时,我的问题是如何将“酷”字改为“好”和“好”字以“酷”? 使用C ++执行此操作的最佳方法是什么? 谢谢。
答案 0 :(得分:0)
您可以使用std::string::replace
替换std::string
的一部分。
您可以使用std::string::find
查找std::string
中的特定子字符串:
std::string foo = "hello replaceme!";
std::string bar = "replaceme";
size_t pos = foo.find(bar);
size_t len = bar.length();
foo.replace(pos, len, "world");
std::cout << foo << std::endl;
以上代码将打印hello world!
。
然后,您可以继续循环,直到foo.find
返回string::npos
,这意味着它未在foo
中找到指定的子字符串。
答案 1 :(得分:0)
如果你真的想花哨的话,还有一种方法可以用字符指针来做到这一点。
这是我发现的:
const bool SUCCESS = true; const bool FAIL = false;
boolean replace_word(const char *foo, const char *bar, const char *foo_bar){
if(foo==NULL || bar==NULL || foo_bar==NULL){
return FAIL;
}
char* new_string = src;
// can also do strcpy(new_string, foo);
int len_old_string = strlen(foo);
int i = 0;
while (i < len_old_string) {
if (*(foo + i) == bar[0]) {
*(new_string + i) = foo_bar[i];
}
i++;
}
foo = new_string;
return (SUCCESS);
}
replace 方法更简单一些,但也不太动态。