HOW TO REPLACE ALL OCCURRENCES OF A CHARACTER IN A STD::STRING

From: http://www.martinbroadhurst.com/replacing-all-occurrences-of-a-character-in-a-stdstring.html

This can be done using the standard library or Boost. The advantage of using Boost is that you get Boost ranges, which mean that you don’t need to specify the beginning and end of the string.

With both libraries, the replacement can be made on the original string or a copy.

  1. Use std::replace()
  2. Use std::replace_copy
  3. Use boost_replace_all
  4. Use boost_replace_all_copy

Method 1: Use std::replace()

1

2

3

4

5

6

扫描二维码关注公众号,回复: 994664 查看本文章

7

8

9

10

#include <iostream>

#include <string>

#include <algorithm>

int main()

{

    std::string str("Quick+brown+fox");

    std::replace(str.begin(), str.end(), '+', ' ');

    std::cout << str << "\n";

}

Method 2: Use std::replace_copy

1

2

3

4

5

6

7

8

9

10

11

#include <iostream>

#include <string>

#include <algorithm>

int main()

{

    std::string str1("Quick+brown+fox");

    std::string str2(str1.size(), '\0');

    std::replace_copy(str1.begin(), str1.end(), str2.begin(), '+', ' ');

    std::cout << str2 << "\n";

}

Method 3: Use boost_replace_all

1

2

3

4

5

6

7

8

9

10

#include <iostream>

#include <string>

#include <boost/algorithm/string/replace.hpp>

int main()

{

    std::string str("Quick+brown+fox");

    boost::replace_all(str, "+", " ");

    std::cout << str << "\n";

}

Method 4: Use boost_replace_all_copy

1

2

3

4

5

6

7

8

9

10

#include <iostream>

#include <string>

#include <boost/algorithm/string/replace.hpp>

int main()

{

    std::string str1("Quick+brown+fox");

    std::string str2 =  boost::replace_all_copy(str1, "+", " ");

    std::cout << str2 << "\n";

}

猜你喜欢

转载自www.cnblogs.com/time-is-life/p/9077945.html