PDA

View Full Version : [C++]Allocazione dimanica della memoria


Energy++
01-07-2006, 09:18
Ragazzi non so come utilizzare l'allocazione dimanica della memoria
se io dichiaro un array di char

es:
char array[20]

questo contiene solo 20 caselle e se per esempio io faccio
una gets(array), potrņ memorizzare una parola di soli 20 caratteri.

Ora se io velessi memorizzare un numero di caratteri indefinito, come faccio??

Se faccio char *array = new char [20] non ho sempre specificato il numero di cassetti disponibili? :mc: :confused:

DanieleC88
01-07-2006, 10:11
Devi usare un puntatore a caratteri, quindi char *.

Inizializzandolo con "new char[20]" avresti un puntatore con 20 byte allocati, quindi il risultato sarebbe lo stesso (a meno che tu non usi realloc dopo e lo ingrandisci).

P.S.: ma non fai prima con std::string?

#include <string>

using namespace std;

int main(int argc, char * argv[])
{
string ciccio = "Stringa di lunghezza pare e piace a te.";

return 0;
}

Č rapido e indolore, fa tutto lui. E per convertirla come puntatore a caratteri, basta usare ciccio.c_str(). ;)

Energy++
01-07-2006, 20:45
Ok ho fatto come mi hai consigliato tu perņ adesso sorge un altro problema:

prima avevo questa struttura

struct
{
char nome[20], cognome[20];
}dati[10];

e la scrivevo su un file in questo modo:

for(int i=0; i<=10; i++)
stream.write(reinterpret_cast <char*> (&dati[i]), sizeof dati[i]);

adesso č in questo modo:

struct
{
string nome, cognome;
} dati[10];

perņ come faccio a scriverla sul file :( ? Nel modo che usavo prima mi da
errori :mc: :mc:


grazie dell'aiuto ciao

DanieleC88
02-07-2006, 11:40
Ah se devi scrivere su file, allora fai prima con array di caratteri a grandezza fissa, come quelle che avevi definito prima. ;)