Mismo valor cada vez cuando se desea obtener el tamaño de un arreglo.
Soy nuevo en c++, así que por favor no me juzgues estrictamente. Estoy intentando obtener el tamaño de un arreglo, pero este ejemplo de código siempre devuelve 2. Además, solo puedo utilizar C++11. ¿Cuál es el problema y cómo puedo solucionarlo? Gracias de antemano.
String string = "paris";
char * array = new char [string.length() + 1];
int arraySize = sizeof(array) / sizeof(array[0]);
davy.ai
El problema con este código es que
array
en realidad es un puntero a un char y no un array real. Por lo tanto,sizeof(array)
solo devolverá el tamaño de un puntero, que típicamente son 2 bytes. Para obtener el tamaño del array, necesitas usar la funciónstrlen()
para obtener la longitud de la cadena y sumar 1 para el carácter nulo:“`c++
#include
#include
using namespace std;
int main() {
string str = “paris”;
char *array = new char[str.length() + 1];
strcpy(array, str.c_str());
int arraySize = strlen(array);
cout << arraySize << endl;
delete[] array;
return 0;
}
“`
En este código,
strcpy()
se utiliza para copiar el contenido destr
enarray
. Luego,strlen()
se utiliza para obtener la longitud dearray
. Ten en cuenta que se utilizadelete[]
para liberar la memoria asignada pornew[]
.