el cuba libre (Normal User)
Newbie
Messaggi: 20
Iscritto: 07/03/2011
|
ciao a tutti
sto scrivendo il mio primo programma in c++ e ho qualche problema col passaggio di una stringa dal main a um metodo della classe. il problema è che passo solo la prima lettera del nome, ecco il main
Codice sorgente - presumibilmente C/C++ |
char nome,cognome,*ptr;
ptr=&nome;
cout<<"inserisci nome utente"<<endl;
cin>>nome;
istanza[i].impostanome(ptr);
|
mentre il metodo ha questa "intestazione"
Codice sorgente - presumibilmente C/C++ |
void impostanome(char *Clientname="")
|
qualcuno mi può aiutare?
grazie mille |
|
comina8 (Normal User)
Pro
Messaggi: 86
Iscritto: 18/06/2011
|
Prima di tutto devi dichiarare una stringa o un array di caratteri.
char nome è un solo carattere e ptr (che punta ad una cella di memoria occupata da un carattere) diventa anch'esso un carattere...
Codice sorgente - presumibilmente C/C++ |
void funzione(char *Stringa);
...
char caratteri[100];
cout<<"Inserisci una stringa";
cin>>caratteri;
funzione(caratteri);
|
Non ho capito nel prototipo del metodo come mai quel ' ="" '...
|
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
Dichiarando char nome crei una variabile carattere, non stringa. Le stringhe si dichiarano come array di caratteri, quindi char *nome. Per questo la cin ti memorizza solamente la prima lettera.
Dovresti fare così:
Codice sorgente - presumibilmente C/C++ |
char *nome = new char[255];
cin >> nome;
istanza[i].impostanome(nome);
|
@comina8: quel ="" è un parametro di default. Se la funzione viene chiamata senza parametri, il parametro ClientName viene assegnato a "". Scelta discutibile ma legale.
Ultima modifica effettuata da lorenzo il 16/08/2011 alle 11:37 |
|