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

C++: Replace character in a string with more than one number?

本文关键字:字符串 字符 替换 数字 c++      更新时间:2023-10-16

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

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

^ 工作! ^

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

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

^ 不工作! ^

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

注意:我不是在问如何:

  • 用另一个字符串替换部分字符串
  • 用另一个子字符串替换子字符串

您应该使用std::basic_string类的某个重载成员函数replace,而不是标准算法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' );
}

您需要给出与要替换的值和替换值相同类型的参数。

'a'char, "1"为字符串。你不能混合这两个,replace在这种情况下只支持char s。

注意:'11'不是一个有效的字符。