Red de conocimiento del abogados - Respuesta jurídica de la empresa - Problemas al usar la función getline en C++

Problemas al usar la función getline en C++

La función getline() tiene dos versiones Respecto a la versión de tres parámetros, su primer parámetro es un puntero a un array de caracteres, porque lo que defines es: char *s (solo s es un puntero a). un tipo de carácter, pero no indica que apunta a una matriz de caracteres), esto puede pasar la compilación, pero causará un error de tiempo de ejecución, porque el compilador no sabe que s apunta a una matriz de caracteres al compilar, y cree que apunta a un carácter., solo asigne un byte de memoria para el contenido señalado por s. De esta manera, cuando se ejecuta, el programa almacena los 1000 caracteres de esta manera: primero busque la memoria señalada por s, que es el byte asignado antes. y guárdelo. Ingrese el primer carácter y luego continúe almacenando los caracteres restantes en el orden de esta dirección de memoria (porque la matriz tiene direcciones consecutivas), pero puede ocurrir un error en este momento, porque excepto la primera memoria que se asignó antes, otra La memoria no está asignada, pero es posible que se hayan almacenado otros datos, por lo que se producirá un error. Y es posible que salga mal porque es posible que se hayan almacenado otros datos.

O char* s=new char[1000];

O char a[1000]; char * s=a;

O char a[1000] ] ;char *s=&a[0];

cin.getline(s,1000,'\n');

No hay problema en usar dos funciones getline, pero el segundo Cada uno sobrescribirá el contenido leído en el primero, y la matriz final almacenará el contenido leído en la segunda llamada a la función getline.