ciao a tutti! Ho questo codice -molto banale e inutile forse- e vorrei sapere se la scrittura cin.getline (p[i].s , 99) e' equivalente a una delle seguenti scritture o a altre che conoscete nel linguaggio c++.
Grazie.

cin.getline (*p.s, 99);
cin.getline (p->s, 99);

In queste 2 scritture non sono sicura che il puntatore punti effettivamente alla posizione i-esima del vettore di stringhe, costruito con l'allocazione dinamica, dato che la i non compare da nessuna parte. sapete come devo inserirla utilizzando la scrittura coi puntatori , anziche' con i vettori - cin.getline (p[i].s , 99) - ???

Grazie mille.

PS: infine, e' sempre necessario quando faccio un'allocazione dinamica, deallocare la memoria alla fine con l'istruzione delete p; ??

Ciao Flo.


#include <iostream.h>
#include <string.h>
#include <stdlib.h>

struct stringa
{
char s [100];
};

int main ()
{

int dim;
int i;
stringa* p;

cout << "Quante stringhe vuoi inserire?";
cin >> dim;
if (dim <= 0)
{
cout << "Errore!"
return 1;
}

p = new stringa [dim];
if (p==NULL)
{
cout << "memoria esaurita";
exit (1);
}

cout<< "inserisci" << dim<< "stringhe: "<< endl;

for (i=0; i<dim; i++)
{cin.getline (p[i].s ,99);}

cout << "Hai appena scritto queste righe: "<<endl;

for (i=0; i<dim; i++)
{cout << p[i].s << endl;}

delete p;

return 0;

}