Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    35

    [C++] Acquisizione stringhe

    Ragazzi ho un problema per me grave, nell'acquisizione di stringhe di caratteri tramite getline().

    Questa è la funzione che sto utilizzando, è membro di una classe in cui sono dichiarati tutti questi attributi come array di caratteri. (per esempio char nome[15]

    codice:
    void tessera::set_tessera(){
    	
    	system("CLS");
    	cout<<"Creazione nuova tessera utente"<< endl<< endl;
    	cout<<"id lettore: "<< id << endl;
    	cout<<"nome: ";
    	cin.getline(nome,15,'\n'); 
    	cout<<"cognome: ";
    	cin>> cognome;
    	cout<< "codice fiscale: ";
    	cin>> codfis;
    	cout<< "tel: ";
    	cin>> tel;
    	cout<< "indirizzo: ";
    	cin>>indirizzo;
    	cout<< "citta': ";
    	cin>>citta;
    	cout<< "n. documento di identita': ";
    	cin>>doc;
    	system("CLS");
    
    }
    Siccome mi serve acquisire le stringhe con gli spazi ho provato ad usare la cin.getline(), vedi scritta in rosso, il problema è però che in output mi stampa nome e cognome di seguito, così:

    "nome: cognome: "

    Non riesco a capire perché? Se uso la cin>> normale va tutto bene, però ho necessita di acquisire la stringa con gli spazi, ho provato anche a crearmi una funzione mia, ma il risultato è lo stesso...

    Aiutatemi, Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    45
    prova a sostituire cin.getline con gets(stringa), o con fgets(stringa, stdin) che è più sicuro...

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [C++] Acquisizione stringhe

    Originariamente inviato da No_Rules }
    [/code]

    Siccome mi serve acquisire le stringhe con gli spazi ho provato ad usare la cin.getline(), vedi scritta in rosso, il problema è però che in output mi stampa nome e cognome di seguito, così:

    "nome: cognome: "
    :master: Prova a mettere un cin.flush() prima di chiedere l'input all'utente :master:
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    35
    Originariamente inviato da Doch88
    prova a sostituire cin.getline con gets(stringa), o con fgets(stringa, stdin) che è più sicuro...
    con gets(stringa) il problema nell'output rimane, con fgets(string, stdin) mi da questo errore:

    error C2660: 'fgets' : function does not take 2 parameters


    Originariamente inviato da Alex'87
    :master: Prova a mettere un cin.flush() prima di chiedere l'input all'utente :master:
    Ho pensato la stessa cosa ma come mai quando inserisco cin.flush mi da questo errore:

    error C2039: 'flush' : is not a member of 'basic_istream<char,struct std::char_traits<char> >'


    Grazie ad entrambi

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da No_Rules

    Ho pensato la stessa cosa ma come mai quando inserisco cin.flush mi da questo errore:

    error C2039: 'flush' : is not a member of 'basic_istream<char,struct std::char_traits<char> >'
    Prova a leggere questa discussione, potrebbe esserti d'aiuto :master:
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    35
    Originariamente inviato da Alex'87
    Prova a leggere questa discussione, potrebbe esserti d'aiuto :master:
    Perfetto, ho letto la discussione che mi hai consigliato.

    Ho inserito cin.ignore(), che conoscevo già ma non avevo mai usato per questo, evidentemente nel buffer c'era un '\n' che mi faceva scattare subito l'altra cout<<

    Grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.