|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
[C++] Input da console
Codice:
cout << "Where do you want to shoot your arrow?" << endl; char c; cin.get(c); if (c != '\n') cin.putback(c); // Needed to clear the buffer from the newline char getline(cin, choice); Vi chiedo: ci sono modi più eleganti di ovviare al problema o l'unica è togliere a mano \n dal buffer? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Prova anche con questo:
Codice:
fflush( stdin ); |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Mi piace la proposta di Kendall, mentre eviterei scanf visto che fa la stessa cosa di getc ma in stile C
![]() ![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Ecco, piccolo appunto, non so se l'fflush sia prestazionalmente più o meno performante del togliere a manina caratteri dal buffer. C'è anche da dire che se è una operazione non sensibile il discorso performance diventa relativamente di poco interesse.
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Feb 2006
Messaggi: 343
|
Se vuoi rimanere in "stile" C++:
Codice:
cin.ignore(cin.rdbuf()->in_avail(), '\n');
__________________
Portatile Asus ROG Strix GL502VSK - Core i7-7700HQ @ 2.8GHz (Turbo 3.8GHz) - 16Gb RAM DDR4-2400 (2x8Gb) - Nvidia GeForce GTX 1070 8Gb - Schermo 120Hz G-SYNC - SSD Samsung 960 PRO NVMe 512Gb - HDD 7200RPM 1Tb "Defeat is not the worst of failures. Not to have tried is the true failure." |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
![]() @Antonio: l'unica cosa perversa di << e >> è quello che hanno ficcato nell'header iomanip, infatti se devo stampare dati formattati uso ancora printf("%-12.4E eccetera ![]() L'overload di << invece è come l'override di ToString() nel C#, molto comodo a mio parere... @Kendall: non servono prestazioni, faccio quel mestiere una volta ogni tanto quando l'utente deve scrivere. Cmq terrò a mente il potenziale problema, grazie. |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Trovato per caso il modo più elegante:
Codice:
cin >> std::ws; getline(cin, mystring); ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:30.