我目前正在尝试用多个数字替换字符串中的单个字符。让我们快点:
replace(string.begin(), string.end(), 'a', '1');
^ 工作! ^
replace(string.begin(), string.end(), 'a', '11');
或
replace(string.begin(), string.end(), 'a', "1");
^ 不工作! ^
我该怎么办?它有什么功能吗?
注:的 我不是问如何:
答案 0 :(得分:0)
您应该使用类replace
的某些重载成员函数std::basic_string
,而不是标准算法std::replace
。
例如
for ( std::string::size_type pos = 0;
( pos = s.find( 'a', pos ) ) != std::string::npos;
pos += 2 )
{
s.replace( pos, 1, 2, '1' );
}
或者,如果数字可以是任意字符串,那么您可以写
std::string number( "123" );
for ( std::string::size_type pos = 0;
( pos = s.find( 'a', pos ) ) != std::string::npos;
pos += number.size() )
{
s.replace( pos, 1, number );
}
如果你想用一个字符替换一个数字,那么你可以写
for ( std::string::size_type pos = 0;
( pos = s.find( "11", pos ) ) != std::string::npos;
++pos )
{
s.replace( pos, 2, 1, 'a' );
}
答案 1 :(得分:-1)
您需要提供与要替换的值和替换值相同类型的参数。
'a'
是char
,而"1"
是字符串。您无法混合这两者,replace
在这种情况下仅支持char
。
注意:'11'
不是有效的字符。