Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problema passagio di una stringa
Forum - C/C++ - problema passagio di una stringa

Avatar
el cuba libre (Normal User)
Newbie


Messaggi: 20
Iscritto: 07/03/2011

Segnala al moderatore
Postato alle 11:01
Martedì, 16/08/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++

  1. char nome,cognome,*ptr;
  2. ptr=&nome;
  3. cout<<"inserisci nome utente"<<endl;
  4. cin>>nome;
  5. istanza[i].impostanome(ptr);


mentre il metodo ha questa "intestazione"
Codice sorgente - presumibilmente C/C++

  1. void impostanome(char *Clientname="")


qualcuno mi può aiutare?
grazie mille

PM
Avatar
comina8 (Normal User)
Pro


Messaggi: 86
Iscritto: 18/06/2011

Up
-1
Down
V
Segnala al moderatore
Postato alle 11:34
Martedì, 16/08/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++

  1. void funzione(char *Stringa);
  2. ...
  3. char caratteri[100];
  4. cout<<"Inserisci una stringa";
  5. cin>>caratteri;
  6. funzione(caratteri);



Non ho capito nel prototipo del metodo come mai quel ' ="" '...

Chi è che si diverte a mettere voti negativi a caso? - comina8 - 16/08/11 15:09
PM
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Up
-1
Down
V
Segnala al moderatore
Postato alle 11:35
Martedì, 16/08/2011
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++

  1. char *nome = new char[255];
  2. cin >> nome;
  3. 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
Ok grazie per il chiarimento...In ogni caso il codice che hai suggerito è sbagliato: tu dichiari un puntatore che non allochi, quindi o dichiari come ho fatto io nome[100] o allochi dinamicamente *nome con malloc o calloc... - comina8 - 16/08/11 11:38
grazie a tutti e due, adesso funziona! grazie mille - el cuba libre - 16/08/11 11:55
PM