Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    33

    [C++] dubbio su funzione getline

    vorrei sapare se la funzione getline è inclusa nella libreria
    #include<iostream.h>.

    inoltre come mai quando scrivo

    string nome_autore;
    getline(cin,nome_autore);

    mi dà errore



    grazie



  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    La funzione è inclusa in iostream.

    Per invocarla devi passare:

    - un array di caratteri o un puntatore a char già allocato con malloc;

    - il numero massimo di caratteri da leggere (puoi passare la dimensione dell'array o della zona di memoria allocata)

    Esempio:

    codice:
    #include <iostream>
    
    using namespace std;
    
    int main () {
      char line[256];
    
      cout << "Inserisci una riga: ";
      cin.getline (line, 256);
      cout << "La riga immessa è: " << line;
      
      return 0;
    }

  3. #3
    #include <iostream>
    Nota come giustamente anx721 ti scrive,il file da includere non è iostream.h ma iostream
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  4. #4
    Giusto per ampliare i metodi la funzione getline potrebbe anche essere utilizzata con iostream.h in questo modo:

    #include<iostream.h>

    main()
    {
    char line[256];

    cout << "Inserisci una riga: ";
    cin.getline (line,256);
    cout << "La riga immessa è " << line << endl;

    return(0);
    }

    Il sapere rende l'uomo libero!

  5. #5
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Originariamente inviato da Paky808
    Giusto per ampliare i metodi la funzione getline potrebbe anche essere utilizzata con iostream.h in questo modo:

    #include<iostream.h>

    main()
    {
    char line[256];

    cout << "Inserisci una riga: ";
    cin.getline (line,256);
    cout << "La riga immessa è " << line << endl;

    return(0);
    }

    Qual è la differenza? Comuqnue iostream.h è obsoleto e non andrebbe usato,


  6. #6
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    33
    ho provato a fare come avete detto voi e non mi da più errore però adesso mi segna errora all'assegnamento come segue:


    cout<<"\n\tInserire nome autore : "<<endl;
    char nome_autore[256];

    cin.getline (nome_autore, 256);

    string due;

    due = "SELECT Citazione.testo_cit FROM Citazione JOIN Autore ON Citazione.cod_autore = Autore.cod_autore WHERE Autore.nome= '" + nome_autore + "'";

    quando assegno la stringa a due mi da errore


    come mai ??

    scusate e grazie

  7. #7

    Re: [C++] dubbio su funzione getline

    Originariamente inviato da madmax84
    vorrei sapare se la funzione getline è inclusa nella libreria
    #include<iostream.h>.

    inoltre come mai quando scrivo

    string nome_autore;
    getline(cin,nome_autore);

    mi dà errore
    Che compilatore usi?

    Comunque, il metodo è corretto, in quanto la classe string
    si espande automaticamente, quando la funzione getline accoda un nuovo carattere, e di solito questa espansione non prevede una nuova allocazione per ogni carattere accodato.
    (per ragioni di efficienza, le implementazioni più comuni raddoppiano la dimensione dell'array che contiene la stringa, ogni volta che l'array non riesce più a contenere tutti i caratteri della stringa)

    vedi se questo ti funziona
    codice:
    #include <iostream>
    #include <string>
    #include <limits>
     
    using namespace std;
    
    int main()
    {
      string nome_autore;
      
      cout << "autore: ";
      getline(cin, nome_autore);
      
      cout << "Nome dell'autore: " << nome_autore << endl;
      
      return 0;
    }
    La include segnalata in blue è necessaria, se stai usando Visual C++, altrimenti non funziona correttamente.

  8. #8
    Originariamente inviato da madmax84
    due = "SELECT Citazione.testo_cit FROM Citazione JOIN Autore ON Citazione.cod_autore = Autore.cod_autore WHERE Autore.nome= '" + nome_autore + "'";

    quando assegno la stringa a due mi da errore


    come mai ??

    scusate e grazie
    o usi questa
    codice:
    #include <iostream>
    #include <string>
    #include <limits>
     
    using namespace std;
    
    int main()
    {
      string nome_autore;
      
      cout << "autore: ";
      getline(cin, nome_autore);
      
      string due = "SELECT Citazione.testo_cit "
                   "FROM Citazione JOIN Autore ON "
                   "Citazione.cod_autore = Autore.cod_autore "
                   "WHERE Autore.nome= '" + nome_autore + "'";
    
      cout << "Query: " << due << endl;  
      
      return 0;
    }
    oppure

    codice:
    #include <iostream>
    #include <string>
     
    using namespace std;
    
    int main()
    {
      char nome_autore[256];
      
      cout << "autore: ";
      cin.getline(nome_autore, 256);
      
      string due = "SELECT Citazione.testo_cit "
                   "FROM Citazione JOIN Autore ON "
                   "Citazione.cod_autore = Autore.cod_autore "
                   "WHERE Autore.nome= '" + string(nome_autore) + "'";
    
      cout << "Query: " << due << endl;  
      
      return 0;
    }

  9. #9
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    33
    Ho dichiarato una classe autore nel file di intestazione


    class autore{

    char nome_autore[256];

    public:
    autore();
    string query(); //la chiamta della funzione è nel main : autore*a; a->query();

    };



    nel file di realizzazione ho definito la funzione membro query()


    string autore::query(){

    cout<<"\n\tInserire nome autore : "<<endl;
    cin.getline(nome_autore,256);
    string due;
    due = "SELECT Citazione.testo_cit FROM Citazione JOIN Autore ON Citazione.cod_autore = Autore.cod_autore WHERE Autore.nome= '" + nome_autore + "'";

    return due;

    }


    dove c'e scritto in rosso mi viene segnalato il segunte errore come mai??

    invalid operands of types `const char[119]' and `char[256]' to

  10. #10
    hai messo questo include ?
    #include <string>

    e comunque anche se hai messo l'include <string>
    non puoi concatenare le stringhe in quel modo.
    Originariamente inviato da madmax84
    string autore::query(){

    cout<<"\n\tInserire nome autore : "<<endl;
    cin.getline(nome_autore,256);
    string due;
    due = "SELECT Citazione.testo_cit FROM Citazione JOIN Autore ON Citazione.cod_autore = Autore.cod_autore WHERE Autore.nome= '" + string(nome_autore) + "'";
    return due;

    }
    dove c'e scritto in rosso mi viene segnalato il segunte errore come mai??

    invalid operands of types `const char[119]' and `char[256]' to[/B]
    Non puoi concatenare due stringhe in quel modo

    esempio non valido
    codice:
    string s = "ciao, " + "ciao";
    esempio valido
    codice:
    string s = string("ciao, ") + "ciao";
    esempio valido
    codice:
    string s = "ciao, " + string("ciao");

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.