c ++如何将数组中的字符串替换为另一个字符串

时间:2017-09-07 15:00:47

标签: c++ arrays string

我正在尝试一个使用数组的短代码,当我调用我的函数WordReplace时,我基本上想要替换仇恨这个词,但是我继续打印相同的东西:

我不喜欢c ++ 我不喜欢c ++

我尝试了不同的东西,但我不确定是什么问题

#include <iostream>
#include <string>
using namespace std;

void WordReplace(string*x, int start, int end, string g, string w)
{
   for (int z = start; z <= end; z++)
   {
      if (x[z] == g)
         x[z] == w;

      cout << x[z]<<" ";
   }
}

int main()
{
   string x[4] = {"I", "don't", "hate", "c++"};

   for (int i = 0; i < 4; i++)
   {
      cout << x[i] << " ";
   }
   cout << endl;

   WordReplace(x, 0, 3, "hate", "love");

   cout << endl;

   return 0;
}

3 个答案:

答案 0 :(得分:5)

只需使用std::replace

std::string x[] = {"I", "don't", "hate", "c++"};
std::replace( std::begin( x ), std::end( x ), "hate", "love" );

live example

答案 1 :(得分:3)

你有c ++。使用适当的容器(例如std :: vector)。

#include <string>
#include <vector>
#include <iostream>
using namespace std;

void WordReplace(vector<string> &sentence, string search_string,
             string replace_string) {
    for (auto &word : sentence) {
        if (word == search_string)
            word = replace_string;
    }
}

int main() {
    vector<string> sentence{"I", "don't", "hate", "c++"};

    for (const auto word : sentence)
        cout << word << " ";
    cout << endl;

    WordReplace(sentence, "hate", "love");

    for (const auto word : sentence)
        cout << word << " ";
    cout << endl;

     return 0;
}

甚至更好,不要重新发明轮子

std::vector<std::string> x {"I", "don't", "hate", "c++"};
std::replace( x.begin(), x.end(), "hate", "love" );

答案 2 :(得分:1)

如果要为变量指定新值,则需要以下语法:

myVar = myValue;

这会将myVar的值更改为myValue。

这种结构:

myVar == myValue

是一个比较并被视为bool,因为它返回true(如果myVar等于myValue)和False(如果它们不相等)。构造不会改变myVar或myValue的值。

在您的情况下,您需要按照x[z] == w替换x[z] = w,如Igor建议