Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153

    c++ lettura da standard input

    salve a tutti ho bisogno di una funzione che ogni volta che la chiama mi letta dallo standard buffer un determinato dato e lo metta in una determinata variabile di tipo char. Inoltre alla fine di ogni chiamata deve pulire il buffer di input e gestire eventuali errori del tipo quando si inserisce ctrl-z oppure quando il buffer è più lungo variabile di tipo char [] che lo deve contenere. Grazie
    io avevo pensato a :
    Codice PHP:
    void read(istream &input,char message[],char dest[]){
        
    cout<<message;
        
    input.get(dest,17);
        
    input.clear();
        
    input.ignore(std::numeric_limits<std::streamsize>::max(),'\n');

    però non da i risultati sperati, in particolare quando la lunghezza dello stream di input è superiore a dim. qualche idea?
    cogli l'attimo

  2. #2
    Non saprei, ma di sicuro non devi fare
    codice:
    input.clear();
    input.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
    così a caso, dal momento che, se la lettura è stata completata correttamente, questa linea fa sì che il programmi si blocchi ad aspettare una nuova linea di testo per poi ignorarla. Piuttosto fai:
    codice:
    if(!input)
    {
        input.clear();
        input.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
    }
    . In ogni caso i problemi che si affrontano con questo approccio di svuotamento del buffer tendenzialmente sono determinati da un'impossibilità di convertire il testo inserito dall'utente nel tipo di dati richiesto, problema che non si pone qui visto che stai acquisendo una stringa.

    Il mio consiglio comunque è di lasciare stare le stringhe C, almeno per l'input (danno più rogne che altro), e di utilizzare le stringhe C++ e la funzione getline. Per acquisire dati non di tipo stringa, invece, cerca nel forum la mia funzione template AcquireInput, che si occupa anche di ripulire lo stream e di chiedere nuovamente l'inserimento se qualcosa va storto.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    grazie

    cmq non posso devo per forza usare le stringhe stile c
    cogli l'attimo

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Come mai?
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    eh abbiamo il professore fissato con le stringhe c! e il corso si chiama Fondamenti di programmazione con linguaggio di riferimento C++!!

    @mitaly ho riguardato la funzione che ho postato e ho aggiunto l'if e sembra che funzioni
    cogli l'attimo

  6. #6
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    abbiamo il professore fissato con le stringhe c
    Capisco. Peccato per lui che i linguaggi evolvano più rapidamente dei professori e il C++ sia tra questi.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  7. #7
    ... va detto che le stringhe C, almeno all'inizio, sono didatticamente utili per far capire cosa ci sta sotto a tutte le varie classi-stringa. E poi puoi apprezzare la comodità delle varie std::string/CString/wxString/... solo dopo aver odiato per un po' le stringhe C.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Più o meno come camminare scalzi su un tappeto di chiodi ritti. Dopo averlo fatto per un po', si apprezzano le scarpe in acciaio.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    Originariamente inviato da MItaly odiato per un po' le stringhe C.
    direi che li odierò a vita...
    cogli l'attimo

  10. #10
    Originariamente inviato da shodan
    Più o meno come camminare scalzi su un tappeto di chiodi ritti. Dopo averlo fatto per un po', si apprezzano le scarpe in acciaio.
    Esatto; tu non hai imparato a camminare così?
    Amaro C++, il gusto pieno dell'undefined behavior.

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.