|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2007
Messaggi: 112
|
[C++] aquisire una frase da line di comando
Salve, come posso acquisire una frase da linea di comando?
esempio se uso Codice:
string descrizione; cout << "Inserisci descrizione" << endl; cin >> descrizione; la variabile contiene solo "prova". se uso Codice:
string descrizione; cout << "Inserisci descrizione" << endl; getline(cin,descrizione,'\n'); ma se uso Codice:
string tipo, descrizione; cout << "Iserieci il tipo" << endl; cin >> tipo; cout << "Inserisci la descrizione" << endl; getline(cin,descrizione,'\n'); come posso risolvere? grazie |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non aspetta perché rimane uno \n all'interno del buffer di input, per l'input da tastiera, se bisogna fare tanto input, imho sarebbe meglio bufferizzare tutta una riga fino allo \n e poi leggere da lì.
Ad esempio una classe di utilità come questa farebbe comodo: Codice:
#include <iostream> #include <sstream> #include <string> using namespace std; class MyInputStream { istream ∈ istringstream currentLine; bool lineRead; public: MyInputStream(istream &in): in(in), lineRead(false) { } istringstream & getLine() { string str; getline(in, str); currentLine.clear(); currentLine.str(str); lineRead = true; return currentLine; } istringstream & getStream() { if(!lineRead) getLine(); return currentLine; } }; int main(int argc, char** argv) { MyInputStream is(cin); int i; string str; is.getLine() >> str; is.getStream() >> i; if(is.getStream().fail()) cout << "Errore" << endl; else cout << i << " " << str << endl; is.getLine() >> i; if(is.getStream().fail()) cout << "Errore" << endl; else cout << i << endl; } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:57.