¿Cómo usar punteros a cadenas en cpp?
Estoy estudiando punteros en C++. He estudiado el concepto de llamada por valor y llamada por referencia. Estoy tratando de crear una función para invertir una cadena que acepte un puntero a una cadena y el tamaño de la cadena. El código es el siguiente:
void reverse(string* str, int size)
{
int start = 0;
int end = size - 1;
while(start < end)
{
swap(*str[start++], *str[end--]);
}
}
int main()
{
string str = "Something";
reverse(&str, str.length());
cout << "Reversed string: " << str << endl;
return 0;
}
Estoy obteniendo este error:
error: no match for ‘operator*’ (operand type is ‘std::string’ {aka
‘std::__cxx11::basic_string’})
12 | swap(*str[start++], *str[end--]);
No quiero usar un arreglo de caracteres, ¿hay alguna forma de hacerlo? Alguien por favor explique, ¿qué hay de malo en mi código? Gracias.
davy.ai
El error en el código se debe a que el puntero a la cadena está siendo desreferenciado usando el operador *, sin embargo, una cadena no es un puntero, por lo que este operador no se puede aplicar. En su lugar, se debería usar el operador [] para acceder a los caracteres individuales de la cadena.
El código corregido debería ser así:
Nótese el uso de paréntesis alrededor de *str para asegurarse de que se aplique el operador [] a la cadena a la que apunta.