Oppure

Loading
22/08/11 12:09
el cuba libre
ciao
ho bisogno di prendere in input vari nomi di ospedali e dato che molti ospedali hanno nomi "separati" come per esempio San Raffaele,San Nicola e cosi via ho pensato di usare il cin.getline che non dovrebbe tener conto degli spazi bianchi. ho però dei problemi questo è il pezzo di codice che ho scritto
element istanza[5];
char *nome=new char[25];
cout<<"inserisci il nome dell'ospedale"<<endl;
cin.getline(nome,(strlen(nome)));
istanza[1].impostanome(nome);

allora element è la classe e istanza, con molta fantasia, è l'istanza della classe. avrei bisogno che qualcuno mi dicesse con esattezza cosa ritorna da questa funzione e cosa passo esattamente al metodo impostanome che fa parte della classe element.
grazie mille!
aaa
22/08/11 13:47
comina8
#define MAX 25
char *Str=new char[MAX];
std::cout<<"Inserisci la stringa: ";
std::cin.getline(Str,MAX);
std::cout<<"Hai inserito "<<Str;


Questo pezzo di codice riceve una stringa in input e la stampa con il metodo da te desiderato (con spazi e altro).
Se impostanome è dichiarata così:

element::impostanome(char *Str); o Str[]
oppure
element::impostanome(char Str[MAX];

Funziona.

PS: Ti conviene sempre passare un numero alle funzione e non sizeof(Puntatore), in alcuni casi non funziona e lascio ai più esperti la spiegazione (non mi sono mai interessato a capire il perché...)
aaa
22/08/11 17:53
lorenzo
La funzione strlen ritorna la lunghezza di una stringa e, per terminare l'esecuzione, sfrutta il carattere 'La funzione strlen ritorna la lunghezza di una stringa e, per terminare l'esecuzione, sfrutta il carattere '{parsed_message}' come terminatore di stringa.
Passando in ingresso una stringa non ancora inizializzata, ma solo allocata, questo terminatore non è presente, quindi la strlen non sa quando fermarsi e potresti anche andare in buffer overflow.' come terminatore di stringa.
Passando in ingresso una stringa non ancora inizializzata, ma solo allocata, questo terminatore non è presente, quindi la strlen non sa quando fermarsi e potresti anche andare in buffer overflow.
aaa