Question

Salut je question concernant cin et tampon. Je veux faire un programme simple io qui prend des entiers.

En tout cas je suis tombé à un problème avec le tampon. En utilisant MinGW dans Windows7 le code suivant affichera les quatre entiers que l'entrée I. Mais quand je passe à SunOS et le compiler avec G ++, il imprime uniquement le premier entier. Est-ce un problème de compilateur ou est-il un problème de système d'exploitation?

#include <iostream>

using namespace std;

int main()
{
   int i;

   cout << "Enter four integers: ";
   cin >> i;
   cout << "\nYou entered the numbers: " << i << " ";

   cin >> i; cout << " ";
   cin >> i; cout << " ";
   cin >> i; cout << " ";

   return 0;
}
Était-ce utile?

La solution

Le code doit imprimer le premier numéro sur pratiquement tout système.

cout << " ";

contre

cout << " " << i;

Par conséquent, de nombreuses lignes directrices indiquent à faire une seule opération par ligne. Le cin juste Clutter optiquement la lecture. En fait, vous ne i sortie EXCEPTÉS la première fois.

Autres conseils

Dans ces lignes:

cin >> i; cout << " ";
cin >> i; cout << " ";
cin >> i; cout << " ";

... vous lisez un numéro (si possible) mais simplement l'impression d'un espace, pas le numéro que vous venez de lire. Si vous avez vraiment besoin de faire cela, je serais probablement écrire une petite fonction, et l'utiliser:

int get_input() { 
    int ret;
    cin >> ret;
    cout << ret;
    return ret;
}

// ...
cout << "Enter four integers: ";

for (int i=0; i<4; i++)
    get_input();

Je ne peux pas dire que je suis particulièrement enthousiasmés par cette fonction, mais dans les circonstances, il est probablement au moins un peu mieux que rien (tout simplement pas beaucoup mieux).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top