c++ how to replace a string in an array for another string

前端 未结 3 977
逝去的感伤
逝去的感伤 2021-01-26 06:43

I am trying a short code that uses an array, I basically want to replace the word hate for love when I call my function WordReplace but I keep printing the same thing:

I

相关标签:
3条回答
  • 2021-01-26 06:57

    You have c++. Use proper containers (e.g. 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;
    }
    

    or even better, don't reinvent the wheel

    std::vector<std::string> x {"I", "don't", "hate", "c++"};
    std::replace( x.begin(), x.end(), "hate", "love" );
    
    0 讨论(0)
  • 2021-01-26 07:04

    If you want to assign a new value to a variable you need the following syntax:

    myVar = myValue;
    

    This will change the value of myVar to myValue.

    This construction:

    myVar == myValue
    

    is a comparison and is treated as a bool, since it returned true(if myVar equals myValue) and False (if they are not equal). The construction doesn't change the value of myVar or myValue.

    In your case you need to replace x[z] == w by x[z] = w, as suggested by Igor

    0 讨论(0)
  • 2021-01-26 07:12

    Just use std::replace:

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

    live example

    0 讨论(0)
提交回复
热议问题