|
|||||||
|
|
|
![]() |
|
|
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: 03:59.



















