Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1

    [C++]Problemi con getline - buffer

    Salve,
    In questa sezione di codice:

    codice:
     void dati_operazioni( void )
     {
         cout << "Quante operazioni desideri fare alla volta? ";
         cin >> quante_operazioni;
         cout << "Tra questi operatori + - * /" << "quali vuoi usare? Inserisci: " << endl;
         cin.ignore();
         getline(cin, qualiOperazioni);
            cout << "Adesso inserisci il range dei numeri da usare. Da ... ";
       cin >> range[0];
       cout << "A ...";
       cin >> range[1];
      cout << "Infine, vuoi usare operazioni con più operatori, o solo uno? Rispondi con si oppure no: ";
      cin >> singole_o_multiple;
        ricapitolazione();
        }
    quando chiedo quali operatori utilizzare, ed inserendo la risposta nella stringa qualiOperazioni con getline, questo non funge.
    Da quanto ho letto ci sono dei problemi nel buffer, e quindi il getline trova giù il carattere \n e non prende nulla.
    E quindi bisogna usare cin.ignore().
    Quello che vorrei sapere: è necessario?
    Utilizzo il getline, perché col cin dato che non prende spazi potrebbero esserci dei problemi.
    Inoltre, utilizzando endl non dovrebbe svuotare il buffer?

    Grazie per l'attenzione.
    Cordialmente,
    signore del tempo.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Ma "non funziona" in che senso?

    E le variabili che usi di che tipo sono?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    A cosa ti riferisci? Se intendi getline, in pratica è come se non ci fosse.
    Ecco i dati membro:
    codice:
     private:
        string qualiOperazioni, singole_o_multiple, rispostaFinale;
       short int quante_operazioni;
        int range[2];

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da signoredeltempo
    A cosa ti riferisci? Se intendi getline, in pratica è come se non ci fosse.
    Intendevo proprio "cosa non va" visto che ho provato e funziona tutto.

    Quali dati inserisci?

    Fai un esempio del malfunzionamento.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Prova togliendo cin.ignore().
    E magari leggi più attentamente il post iniziale, dato che è spiegato il problema.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da signoredeltempo
    Prova togliendo cin.ignore().
    Non devi toglierlo. E' appunto necessario, come hai osservato anche tu, per evitare che il newline della precedente cin sia interpretato dalla getline.

    E magari leggi più attentamente il post iniziale, dato che è spiegato il problema.
    "questo non funge." spiega il problema?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Come ho scritto precedentemente, è come se non fungesse.
    Perché come detto, trova il newline e sembra che non prenda niente.
    Quindi ho provato ad usare il cin.ignore e con questo funge.
    Però, sempre scritto nel primo post, ho detto che vorrei non usarlo ("è necessario?") dato che non l'ho ancora studiato.
    Inoltre, endl non dovrebbe svuotare il buffer (sempre scritto nel primo post)?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da signoredeltempo
    Però, sempre scritto nel primo post, ho detto che vorrei non usarlo ("è necessario?") dato che non l'ho ancora studiato.
    E' necessario ... non ti rimane che studiarlo.

    Al limite puoi sostituirlo, se ti pare più comprensibile, con un

    while(getchar()!='\n');

    Inoltre, endl non dovrebbe svuotare il buffer
    No ... non c'entra nulla. endl è usato in out per andare a capo, non c'entra con l'input.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Edit:
    Mettendo ad esempio:
    char op[5]; //4 operatori + \0
    Utilizzando cin.getline(op, 5) a 5 è incluso \0 oppure no?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Stai saltando di palo in frasca.

    Cosa c'entra questa domanda con il thread attuale e con la cin.ignore?

    E perché utilizzare un vettore di char al posto una string dato che lavori in C++ ?

    E non deve essere possibile inserire gli spazi tra i vari simboli?

    Perché complicarsi la vita ? A quale scopo?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.