Usar una segunda función no es trampa. Pero ya te digo que no la uso. Como ya he dicho, no se trata de modificar la variable que pasas por parámetro, sino devolver uno nuevo en función de la otra.
Como aún no quiero poner mi resultado te doy un ejemplo distinto. Crear una función
anadeX que dado un string, a cada caracter le preceda una 'x': "abcd" -> "xaxbxcxd".
Código C++:
Ver originalstd::string anadeX(const std::string& str) {
if (str.empty()) {
return std::string();
} else {
return std::string("x") + str[0] + anadeX(str.substr(1));
}
}
int main (void) {
std::string arr[] = {
"",
"abcde",
"aab",
"abb",
"aa",
"bb",
"a",
"b",
"abccccfabaddeff"
};
int i;
for (i = 0; i < 9; ++i) {
std::cout << arr[i] << " -> " << anadeX(arr[i]) << std::endl;
}
return 0;
}
¿Ves que no ocurre nada por usar const?
Otra cosa es que tus funciones no puedan aplicarse para ese prototipo de función con const porque usas métodos que modifican la cadena origen. Pero no te preocupes, permito los dos prototipos.
Un saludo.