0

Buenas noches estoy haciendo un programa sencillo que permita ingresar varios nombres y edades pero tengo un problema con la lectura de los nombres. Tengo este código

char **nombre
 int *edad=(int *)malloc(5*sizeof(int))
nombre=(chat **)malloc (5*sizeof(int))// 5 cadenas de caracteres
for(int i=0; i<5;i++){
   nombre[i]=(chat*)malloc(10*sizeof(chat))//número de caracteres 
   cout<<"ingrese el nombre"
   con.getline(nombre[i],10) //aquí es el problema solo me Lee la primera cadena
   cout<<" ingresé edad"
   con>>edad[i] //aquí no tengo problema me lee las 5 edades
}

Les agradezco mucho si me pueden ayudar por favor

Nery Ortez
  • 1,489
  • 1
  • 4
  • 12

1 Answers1

1

Estás de suerte, porque C++ ya tiene una herramienta perfecta para eso:

std::string.

Usando std::string te ahorras toda la gestión manual de memoria ya que es el propio objeto quien que se encarga de esa tediosa tarea. Tu código podría quedar como algo parecido a esto:

std::string nombres[5]{};
unsinged edades[5]{};

for (int indice = 0; indice != 5; ++indice) {
    std::cout << "ingrese el nombre";
    std::getline(std::cin, nombres[indice]);

    std::cout << "Ingrese edad";
    std::cin >> edades[indice];
}

A tener en cuenta.

Tienes montones de fallos en tu código, tantos que tengo serias dudas de que hayas intentado siquiera compilarlo:

  • En C++ las sentencias finalizan con ;, tú no has puesto ni una.
  • std::malloc es una herramienta de C, en C++ se usa new.
  • No has borrado la memoria que solicitas, si la pides con malloc debes liberarla con free y si la pides con new debes liberarla con delete.
  • El tipo chat no forma parte de C++ ni de C.
  • (5*sizeof(int)) no son cinco cadenas de caracteres, son cinco enteros.
  • No se que es con, pero no forma parte de C++.
PaperBirdMaster
  • 44,474
  • 6
  • 44
  • 82
  • Pero ese std se quita con using namespace std verdad? ; y por los fallos que me dices pues el código que yo puse es solo para que se den una idea de lo que tengo no es el código que tengo en verdad y tiene tantos fallos ya que lo escribí desde un celular y por ende se autocorrige las palabras. La idea es usar char y no string – Erik Andres Jul 21 '18 at 15:19
  • El `std::` no se *quita* con el `using namespace std` si no que se hace implícito. De todas maneras no tiene nada que ver con tu pregunta; aún así echa un vistazo a [esta otra pregunta que trata del tema](https://es.stackoverflow.com/q/460/2742). Si lo escribiste desde un celular entiendo que tenga tantos fallos, pero aún así intenta no publicar preguntas así: los fallos distraen de la pregunta. – PaperBirdMaster Jul 22 '18 at 18:27