Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > cin.get() не хочет работать


Автор: greengarlic 3.6.2010, 22:30
вот код с++

Код

#include <iostream>
using namespace std;

void func(int i)
{
    cout << "i=  " << i << "\n";        
}

int main()
{

    func(3);
    cout << "j = ";
    int j;
    cin >> j;
    func(j);

    cin.get();    
    return 0;
}

программа не хочет ждать нажатие ентера, а просто закрывается, непойму почему, объясните пожалуйста 

Автор: kemiisto 3.6.2010, 22:55
Проблема в том, что строчкой
Код
cin >> j;

ты запрашиваешь у пользователя число. Он вводит число и нажимает <Enter>. Само число считывается, а символ перехода на новую строку (из-за нажатия <Enter>) так и "висит" в cin.

Когда потом вызываешь
Код
cin.get();
 он этот "висящий" символ перехода на новую строку считывает и баста.

Либо 2 раза подряд вызывать get(), либо:
Код

cin >> j;
cin.ignore();

Автор: greengarlic 3.6.2010, 23:00
ага, вот оно что. Спасибо kemiisto!

Автор: susanin 4.6.2010, 02:10
можно еще getchar() сделать)

Автор: Ins3t 4.6.2010, 19:45
Цитата

можно еще getchar() сделать)


Он же на С++ пишет. Зачем ему ради паузы использовать функцию из С библиотеки, которая вполне заменяемая функцией из С++?
Это далеко не самый лучший стиль программирования  smile 

Автор: toxx 4.6.2010, 20:33
Ins3t
мешать всё в одну кучу нынче модно =)

Автор: djamshud 4.6.2010, 21:25
toxx, модно не мешать, а сочетать.

Автор: toxx 4.6.2010, 22:31
djamshud
в любом случае обычно что-нить где-нить да не работает потом smile 

Автор: djamshud 4.6.2010, 22:43
toxx, с кривыми руками и на одном с++ не заработает;).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)