Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [c++] come input una stringa di testo con spazi

    come da titolo, questo codice
    codice:
    char str[100];
    cin>>str;
    cout<<str;
    funziona in modo corretto se la stringa non ha spazi, ma se ce ne sono al primo tronca la stringa....
    ho provato anche con la funzione getch e sembra funzionare..
    codice:
    void strin(char *str)
    {
        char buffer=0;
        int i=0;
        while(int(buffer)!=13)
        {
            buffer=getch();
            cout<<buffer;
            str[i]=buffer;
            i++;
            }
        cout<<"\n";
        str[i]=0;
    }
    .se non devo usare subito un cout<<str;, passando il risultato ad una funzione qualsiasi funziona alla perfezione, ma ho alcuni problemi con un cout str, infatti la main
    codice:
    int main()
    {
        char str[100];
        strin(str);
        cout<<"string:\t"<<str;
        system("PAUSE");
        return 0;}
    non mi produce alcun risultato!?!?!

  2. #2
    cin.getline(str, int_lunhezza_str);
    ...Terrible warlords, good warlords, and an english song

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    444
    dopo la cin.getline() spesso è necessario un

    cin.ignore (80,'\n')

    per svuotare il buffer della tastiera, in previsione di altre letture
    *********************************
    Andrea
    *********************************

  4. #4
    grazie mille, proverò.

  5. #5
    ho ancora un piccolo problema, la sequenza
    codice:
    cin.getline(str,100);
    cin.ignore(80,"\n");
    mi obbliga a premere 2 volte invio (penso sia 1 x funzione)... come posso ripulire il buffer senza dover digitare niente?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    444
    uhm, strano, prova a levare il cin.ignore e vedi se dopo ti fa leggere qualcos'altro
    *********************************
    Andrea
    *********************************

  7. #7
    proprio non ci sono,
    con questo codice
    codice:
    #include <iostream>
    #include <string.h>
    using namespace std;
    
    int main()
    {
        char str1[10],str2[10];
        cin.getline(str1,10);
        cin.ignore()		//senza non prende input, con devo fare doppio invio???
        cout<<"string:\t"<<str1<<endl;
        cin.getline(str2,10);
        cin.ignore()
        cout<<"string:\t"<<str2<<endl;
        system("PAUSE");
        return 0;}
    se i caratteri immessi sono meno di quelli passati alla variabile tutto Ok (se sono uguali iniziano i problemi...), altimenti non prende più nessun input.
    inserendo cin.ignore() risolvo il problema ma devo dare un doppio invio, sono ancora al punto di prima

  8. #8
    forse qui ho trovato qualcosa di interessante:
    http://www.fredosaurus.com/notes-cpp...ing-chars.html
    dice che con cin>>noskipws legge anche gli spazi.
    comunque la storia di cin.ignore non mi convince ... aiutatemi

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    444
    ricorda che la cin.ignore ha sempre 2 parametri, in genere si usa così

    cin.ignore (80,'\n')
    *********************************
    Andrea
    *********************************

  10. #10
    in effetti hai ragione, programmare dopo aver fatto un pezzo di tesina non rende... comunque cin>>noskipws non funziona, mi potresti postare come faresti una stupidata come quella che sto provando a fare io? adesso se l'input è + lungo dei caratteri che il getline manda alla stringa non prende + niente e ignore() non ignora niente...

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.