es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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]);
Tags:  , , , ,

Answer

  1. Avatar for 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ón strlen() 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 de str en array. Luego, strlen() se utiliza para obtener la longitud de array. Ten en cuenta que se utiliza delete[] para liberar la memoria asignada por new[].

Comments are closed.