Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Input di stringhe in una struct
Forum - C/C++ - Input di stringhe in una struct

Avatar
Lego86 (Member)
Rookie


Messaggi: 30
Iscritto: 04/10/2008

Segnala al moderatore
Postato alle 10:46
Domenica, 29/03/2009
Salve, non riesco a capire come mai non riesco ad acquisire una stringa di una struttura nè con la cin, nè con la scanf, nè con la getline. In ogni siutazione il compilatore mi dà un errore del tipo "no matching funcion to call...". La cosa strana è che ho provato creando un'altra struttura in un nuovo programma e funziona con la cin! Ho anche provato ad acquisire solo "pazienti.nome[1]" e non mi dà problemi.. Potreste rispondermi presto? è importante, grazie.
ecco il codice:
Codice sorgente - presumibilmente C#

  1. #include <iostream>
  2. #include <fstream>
  3. #include <stdio.h>
  4. #include <string>
  5. using namespace std;
  6. short int scelta;
  7. struct trattamenti
  8. {
  9.     string nomet[15];
  10.     string prezzot[10];
  11. }trattamenti;
  12.  
  13. struct pazienti
  14. {
  15.     string chiave[5];
  16.     string nome[15];
  17.     string cognome[20];
  18.     string trattamento[15];
  19.     string pagato[10];
  20.     string dovuto[10];
  21. }pazienti;
  22.  
  23. int main()
  24. {
  25.     while(scelta!=7)
  26.     {
  27.        system("CLS");
  28.        cout<<"iDent V 0.1"<<endl;
  29.        cout<<"Gestione studio odontoiatrico"<<endl;
  30.        cout<<"_________________________________________________________"<<endl;
  31.        cout<<""<<endl;
  32.        cout<<"Fai la tua scelta..."<<endl;
  33.        cout<<""<<endl;
  34.        cout<<"1) Nuovo paziente"<<endl;
  35.        cout<<""<<endl;
  36.        cout<<"2) Elenco pazienti"<<endl;
  37.        cout<<""<<endl;
  38.        cout<<"3) Nuovo trattamento"<<endl;
  39.        cout<<""<<endl;
  40.        cout<<"4) Elenco trattamenti"<<endl;
  41.        cout<<""<<endl;
  42.        cout<<"5) Nuovo pagamento"<<endl;
  43.        cout<<""<<endl;
  44.        cout<<"6) Elimina paziente dall'elenco"<<endl;
  45.        cout<<""<<endl;
  46.        cout<<"7) Esci"<<endl;
  47.        cin>>scelta;
  48.        switch(scelta)
  49.        {
  50.           case 1:
  51.                {                    
  52.                      system("CLS");
  53.                      cout<<"---Nuovo paziente---"<<endl;
  54.                      ofstream myfile;
  55.                      myfile.open("elenco.txt",ios::out);
  56.                      cout<<"Inserisci nome paziente: ";
  57. ---- ----------------cin.getline(pazienti.nome); /*PROBLEMA!!*/--------------------
  58.                      myfile.close();
  59.                      system("PAUSE");
  60.                }
  61.                break;
  62.           case 2:
  63.                {
  64.                      system("CLS");
  65.                      cout<<"---Elenco pazienti---"<<endl;
  66.                      system("PAUSE");
  67.                }
  68.                break;
  69.           case 3:
  70.                {
  71.                      system("CLS");
  72.                      cout<<"---Nuovo trattamento---"<<endl;
  73.                      system("PAUSE");
  74.                }
  75.                break;
  76.           case 4:
  77.                {
  78.                      system("CLS");
  79.                      cout<<"---Elenco trattamenti---"<<endl;
  80.                      system("PAUSE");
  81.                }
  82.                break;
  83.           case 5:
  84.                {
  85.                      system("CLS");
  86.                      cout<<"---Nuovo pagamento---"<<endl;
  87.                      system("PAUSE");
  88.                }
  89.                break;
  90.           case 6:
  91.                {
  92.                      
  93.                      system("CLS");
  94.                      cout<<"---Elimina paziente dall'elenco---"<<endl;
  95.                      system("PAUSE");
  96.                }
  97.                break;                                                                          
  98.        }
  99.     }
  100.     system("PAUSE");
  101.     return 0;  
  102.    
  103. }


PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 16:09
Domenica, 29/03/2009
Ne cin.getline() ne scanf accettano std::string come parametro e tantomeno un array di std::string ma richiedono un char*.

Fossi in te rivedrei bene la struttura delle strutture (scusa il gioco di parole) e la logica del programma (visto che stai usando un array di stringhe come una stringa).

Ultima modifica effettuata da manvb.net il 29/03/2009 alle 16:11


"E' facile distruggere, la vera sfida è creare!"(cit. me)

"Ricordati chi sei, non permettere a nessuno di cambiarti, non perdere mai te stesso. Farai grandi cose nella vita."(cit. me)

double penetration; //ouch
PM Quote
Avatar
Lego86 (Member)
Rookie


Messaggi: 30
Iscritto: 04/10/2008

Segnala al moderatore
Postato alle 12:55
Lunedì, 30/03/2009
Infatti me ne sono reso conto solo più tardi! Che stupido, pensando alle stringhe come array di caratteri ho dichiarato array di stringhe.. Grazie mille

PM Quote
Avatar
panteronenero (Normal User)
Newbie


Messaggi: 1
Iscritto: 11/04/2012

Segnala al moderatore
Postato alle 16:48
Mercoledì, 11/04/2012
ciao, potresti inviarmi il programma alla mail: cucuz91@live.it
te ne sarei grato :asd:

PM Quote