📅  最后修改于: 2023-12-03 15:20:20.939000             🧑  作者: Mango
在C++中,标准库提供了一些用于操作字符串的函数,其中包括std::字符串::replace_copy()和std::字符串::replace_copy_if()。
std::字符串::replace_copy()函数用于将一个字符串中的一部分替换为另一个字符串,并返回替换后的结果。
函数声明如下:
template< class InputIt, class OutputIt >
OutputIt std::replace_copy( InputIt first, InputIt last, OutputIt d_first,
const typename std::iterator_traits<InputIt>::value_type& old_value,
const typename std::iterator_traits<InputIt>::value_type& new_value );
其中,参数解释如下:
函数的返回值表示替换后的字符串的终止迭代器。
下面是一个简单的示例:
#include <iostream>
#include <string>
int main()
{
std::string s = "hello world!";
std::string r;
std::replace_copy(s.begin(), s.end(), std::back_inserter(r), 'l', 'L');
std::cout << r << '\n';
}
上面的示例中,我们将s字符串中所有的小写字母l替换为大写字母L,并将结果存放在r字符串中。输出结果为:
heLLo worLd!
std::字符串::replace_copy_if()函数的用法与std::字符串::replace_copy()类似,只不过多了一个谓词函数的参数。
函数声明如下:
template< class InputIt, class OutputIt, class UnaryPredicate >
OutputIt std::replace_copy_if( InputIt first, InputIt last, OutputIt d_first,
UnaryPredicate p,
const typename std::iterator_traits<InputIt>::value_type& new_value );
其中,参数解释如下:
函数的返回值表示替换后的字符串的终止迭代器。
下面是一个简单的示例:
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
int main()
{
std::string s = "hello world!";
std::string r;
std::replace_copy_if(s.begin(), s.end(), std::back_inserter(r),
[](auto c) { return std::islower(c); }, '*');
std::cout << r << '\n';
}
上面的示例中,我们将s字符串中所有的小写字母替换为*,并将结果存放在r字符串中。输出结果为:
****o *****!
在上面的示例中,我们使用了一个lambda表达式作为谓词函数,用于判断哪些字符需要被替换。在lambda表达式中,我们使用了std::islower()函数判断字符是否为小写字母。如果是,我们就返回true,表示需要对该字符进行替换。否则,返回false,表示不需要进行替换。