Domanda Risolto Perchè questa operazione si ripete più volte del dovuto?

DanyDollaro

Utente Electrum
14 Luglio 2018
148
41
58
138
Salve a tutti, come dal titolo, il codice è questo:
C++:
#include <iostream>
using namespace std;

int main()
{
    char a[255];

    bool loop = true;
    while (loop == true)
    {
        cout << "Inserisci un valore: ";    cin >> a;
    }
}
in cui se io scrivo come valore "123" va benissimo ma se scrivo "1 2 3" ripete il loop 3 volte ignorando l`operatore cin.
Sapreste dirmi perchè fa cosi? e come posso evitarlo?
 
Con l'operatore >> leggi fino ai whitespaces (spazio, tab, newline, etc.). Si ripete perché prima leggi "1" e "2 3" rimane nel buffer stdin, poi leggi "2" e "3" rimane nel buffer stdin e infine leggi "3" e il buffer stdin è vuoto e in attesa dell'utente. Per leggere anche gli spazi devi usare cin.getline(a, 255) o, ancora meglio, getline (cin, a) dichiarando a come stringa (le std::string del C++, non quelle del C).
 
  • Mi piace
Reazioni: DanyDollaro