I am still new to STL and wanted to replace all occurrences of ch in a string with k.
I tried the following:
std::replace (str.begin(), str.end(), "ch", "k");
But it threw this error:
no matching function for call to ‘replace(__gnu_cxx::__normal_iterator<char*,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > >,
__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>,
std::allocator<char> > >, const char [2], const char [1])
How do I get replace to work in this case?
Note: I saw a similar question but in that case the OP was using "blah" and 'b' as arguments to be replaced but here both of my arguments are strings.
Since the definition of std::replace is
template< class It, class T >
void replace( It first, It last, const T& old_value, const T& new_value );
Reference http://en.cppreference.com/w/cpp/algorithm/replace
You must pass a char because a std::string is std::basic_string<char> and T is a char.
For example:
std::replace (str.begin(), str.end(), 'c', 'k');
To solve your problem, read: How do I replace all instances of a string with another string?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With