使用C ++更改和替换字符串中的单词

时间:2015-02-25 16:30:11

标签: c++

首先,我想为我糟糕的英文写作道歉。 我的问题是:例如我们有很多句子,在这组单词中,一些单词必须替换为其他单词,如下所示:

  

在这个凉爽的日子里,去公园玩得很开心,玩得很开心。

改变后的字符串变成这样:

  

在这美好的一天,去公园和玩酷足球真是太好了。

当你看到“完美”这个词取代“那么好”并且这部分并不困难时,我的问题是如何将“酷”字改为“好”和“好”字以“酷”? 使用C ++执行此操作的最佳方法是什么? 谢谢。

2 个答案:

答案 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 方法更简单一些,但也不太动态。