-1

我需要创建一个接受两个字符和一个字符串并返回一个字符串的函数。
该函数应将第一个参数中的所有字母替换为第二个
参数。例如,如果传递的字符串是“How now cow”,并且函数将
所有 'o' 替换为 'e',那么新字符串将是:“Hew new cew”。

我知道这是错误的,但我该如何修改这段代码才能工作?

#include <iostream>
using namespace std;

string replace(char a, char b, string Rstring){
string Restring;

Restring= Rstring.replace( 'o', 2, 'e')

return Restring;
}

int countspace(string  mystring){
int counter;
for (int i=0;i<mystring.length();i++){

if (mystring[i]== ' ')
counter++;
}
return counter;


} 
4

1 回答 1

1

std::string.replace不会做你想做的事。相反,您应该编写自己的方法,执行此解析并不太难。

 replaceChars(string *str, char old, char replacement)
 {
      for(char& c : str) {
         if (c == old)
            c = replacement;
      }
 }

该循环仅在 C++11 中有效,因此如果它不起作用,请使用这个 insead;

     while(char* it = str; *it; ++it) {
          if (*it == old) // dereference the pointer, we want the char not the address
            *it = replacement;
      }

您将这个指针传递给字符串和要交换的字符。当您遇到将其设置为替换的旧字符时,它会逐个字符地遍历字符串。for 循环使用对的引用,c因此您将就地更改字符串,无需分配新字符串或任何东西。如果您不使用std::string它,则可以使用字符数组轻松完成。这个概念是完全一样的。

于 2012-11-19T00:39:33.203 回答