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
![]()
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
![]()
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; }![]()
Nota come giustamente anx721 ti scrive,il file da includere non è iostream.h ma iostream#include <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.)
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!
Qual è la differenza? Comuqnue iostream.h è obsoleto e non andrebbe usato,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);
}
![]()
![]()
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![]()
Che compilatore usi?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
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
La include segnalata in blue è necessaria, se stai usando Visual C++, altrimenti non funziona correttamente.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; }
o usi questaOriginariamente 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![]()
oppurecodice:#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; }
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; }
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
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;
}Non puoi concatenare due stringhe in quel mododove 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]
esempio non valido
esempio validocodice:string s = "ciao, " + "ciao";
esempio validocodice:string s = string("ciao, ") + "ciao";
codice:string s = "ciao, " + string("ciao");