C ++:用多个数字替换字符串中的字符?

时间:2014-05-09 13:12:17

标签: c++

我目前正在尝试用多个数字替换字符串中的单个字符。让我们快点:

replace(string.begin(), string.end(), 'a', '1');

^ 工作! ^

replace(string.begin(), string.end(), 'a', '11');

replace(string.begin(), string.end(), 'a', "1");

^ 不工作! ^

我该怎么办?它有什么功能吗?

注: 我不是问如何:

  • 用另一个字符串
  • 替换字符串的一部分
  • 将子字符串替换为其他子字符串

2 个答案:

答案 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'不是有效的字符。