Replace part of a string with another string

前端 未结 15 2349
终归单人心
终归单人心 2020-11-22 02:54

Is it possible in C++ to replace part of a string with another string?

Basically, I would like to do this:

QString string(\"hello $name\");
string.re         


        
相关标签:
15条回答
  • 2020-11-22 03:43

    Yes, you can do it, but you have to find the position of the first string with string's find() member, and then replace with it's replace() member.

    string s("hello $name");
    size_type pos = s.find( "$name" );
    if ( pos != string::npos ) {
       s.replace( pos, 5, "somename" );   // 5 = length( $name )
    }
    

    If you are planning on using the Standard Library, you should really get hold of a copy of the book The C++ Standard Library which covers all this stuff very well.

    0 讨论(0)
  • 2020-11-22 03:44

    I use generally this:

    std::string& replace(std::string& s, const std::string& from, const std::string& to)
    {
        if(!from.empty())
            for(size_t pos = 0; (pos = s.find(from, pos)) != std::string::npos; pos += to.size())
                s.replace(pos, from.size(), to);
        return s;
    }
    

    It repeatedly calls std::string::find() to locate other occurrences of the searched for string until std::string::find() doesn't find anything. Because std::string::find() returns the position of the match we don't have the problem of invalidating iterators.

    0 讨论(0)
  • 2020-11-22 03:47

    With C++11 you can use std::regex like so:

    #include <regex>
    ...
    std::string string("hello $name");
    string = std::regex_replace(string, std::regex("\\$name"), "Somename");
    

    The double backslash is required for escaping an escape character.

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