我需要创建一个接受两个字符和一个字符串并返回一个字符串的函数
该函数应该用第二个替换第一个参数中的所有字母
参数。
例如,如果传递的字符串是“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;
}
答案 0 :(得分: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;
}
您将此指针传递给字符串以及要交换的字符。它会通过char循环遍历字符串char,当您遇到要设置为替换的旧字符时。 for循环使用对c
的引用,因此您将更改字符串,无需分配新字符串或任何内容。如果您不使用std::string
,则可以使用字符数组轻松完成此操作。这个概念完全一样。