2012-05-25 2 views
0

처음으로 Visual C++ (언어에 익숙하지 않음)로 작업했습니다. 경험이 많은 C# ... Visual Studio에서 시작한 첫 번째 콘솔 앱이 있습니다.어떻게 콘솔 앱이 끝나지 않습니까?

#include "stdafx.h" 
#include <iostream> 

using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    int i; 

    cin >> i; 

    return 0; 
} 

Enter 키를 누를 때 콘솔 창 - 따라서 애플리케이션이 어떻게 닫히지 않습니까? 다른 입력 없음 - 그냥 입력 ...

내가 입력 한 경우 더 중요한 것은, 어떻게 응용 프로그램을 종료 할 수 있습니다 (exit())를 제대로 사용하고 싶지 않습니까?

답변

2

std :: cin은 비어 있지 않은 문자열 하나를 기다렸다가이 문자열을 정수로 변환하려고 시도합니다.

Enter 키를 누르면 std :: cin은 빈 문자열 만 가져오고 유효한 입력을 계속 기다립니다. 이는 의도적으로 설계된 동작입니다. std :: cin은 다른 상호 작용을 에뮬레이트하기위한 것이 아닙니다.

키 누르기로 앱을 종료하려면 키보드 기능을 사용하려면 OS 고유의 기능을 사용해야합니다.

이것은 DOS/console Windows의 "conio.h"에서 kbhit() 기능을 사용하고 POSIX 시스템에서 termio 기능을 사용합니다. 소스에서

난 당신이 MSVC++ 컴파일러를 사용하는 것이 결론, 그래서 의해

std::cin >> i 

를 교체 시도 할 수

while(!kbhit()) {} 

#include <conio.h> 

를 추가하고 기억하는 것을 잊지 마세요 이것은 Windows 전용 솔루션입니다.

+1

+1 추가 설명. 나는 또한'cin.get (c);'를 쓸 수 있다는 것을 발견했고, 나는 원하는 결과를 얻을 수 있었다. 나는 ''도 찾아 볼 것이다 ... 고마워! – IAbstract

+0

예. cin.get (c)는 Enter 키를 눌러 생성 된 CR/LF를 포함하여 모든 문자를 읽습니다. 이렇게해도 작동합니다. 좋은 지적. –

관련 문제