проблема cin и буфера - PullRequest
       21

проблема cin и буфера

0 голосов
/ 10 сентября 2010

Привет, у меня есть вопрос относительно cin и buffer. Я хочу сделать простую программу io, которая принимает целые числа.

В любом случае я столкнулся с проблемой с буфером. Используя MinGW в Windows7, следующий код выведет все четыре целых числа, которые я ввел. Но когда я переключаюсь на SunOS и скомпилирую его с G ++, он выведет только первое целое число. Это проблема компилятора или проблема операционной системы?

#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;
}

Ответы [ 2 ]

1 голос
/ 10 сентября 2010

В этих строках:

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

... вы читаете число (если возможно), а затем просто печатаете пробел, не число, которое вы только что прочитали. Если вам действительно нужно это сделать, я, вероятно, напишу небольшую функцию и воспользуюсь ею:

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

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

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

Не могу сказать, что мне особенно нравится эта функция, но в сложившихся обстоятельствах она, вероятно, по крайней мере, немного лучше, чем ничего (только не намного лучше).

1 голос
/ 10 сентября 2010

Код должен распечатывать первое число практически в любой системе.

cout << " ";

против

cout << " " << i;

Поэтому во многих рекомендациях указывается делать только одну операцию на строку.Син просто оптически загромождает чтение.На самом деле вы никогда не выводите i исключено в первый раз.

...