Cita:
Iniciado por Srgy He probado copiar la primera sentencia que posteas justo antes del fgets y se me queda colgado, sin hacer nada. Ya no me saca del programa pero se queda "sin hacer nada". ¿Insinúas que es necesario limpiar el búfer antes de llevar la cadena a esa variable? ¿Por qué no basta con hacer la asignación?
Porque en el buffer se puede quedar basura... por ejemplo un salto de línea que se haya podido quedar ahí o alguna tecla que haya pulsado el usuario mientras tanto.
El buffer de entrada almacena todas las teclas que pulses, aunque no estés llamando en ese momento a las funciones de lectura. El buffer está a nivel del sistema operativo, él almacena ahí lo que vas haciendo y luego el programa va consultando bajo demanda.
Cita:
Iniciado por Srgy A lo que comentas de no usar char[] y usar std::string... soy novato en C++ y no conozco esto. ¿Puedes comentar por encima qué diferencias y que pros obtengo con ese cambio?
string es una clase de C++. Internamente gestiona un
char[], lo que sucede es que es capaz de redimensionar ese char* sin que tú tengas que preocuparte de ello, por lo que SIEMPRE te va caber lo que intentes almacenar en dicha clase... y sin preocuparte por la gestión de la memoria dinámica!!!
Aparte de eso, al ser una clase, incorpora una serie de métodos que hacen más sencillo su uso respecto a un
char*.
Un saludo