2016-07-03 6 views
-3

Вот моя первая программаПочему результат отличается, когда я нажимаю enter в конце предложения?

#include <iostream> 
#include <string> 
using namespace std; 

int main() 
{ 
    int a; 
    string s; 
    double d; 
    while(cin >> a >> s >> d) 
     cout << a << s << d; 
    return 0; 
} 

Когда я ввода некоторых простых данных и нажмите Enter, результат показан сразу:

image

Однако код в другой программе, ведет себя по-разному :

Когда я запускаю этот код, введите некоторые данные и нажмите . Введите, он ждет, пока я приведу больше данных, а не покажу результат.

image

Не могли бы вы объяснить мне это?

+0

Не уверен, что MSVC (Visual Studio), но другие компиляторы [способны] (http://coliru.stacked-crooked.com/a/7a11a443f471e1f5) из говоря вам, что есть что-то. Часто стоит попробовать более одного увидеть предупреждения. – chris

ответ

3

Удалить точку с запятой после цикла while. Как бы то ни было, он заставляет петлю не иметь тела, а это значит, что она просто навешивается на cin. Еще лучше, если использовать фигурные скобки, чтобы разграничить тело:

while(cin >> book.bookNo >> book.units_sold >> book.price) { 
    book.Print(); 
}