콘솔 프로그램을 컴파일 한 후 콘솔 창은 실행 후 즉시 닫힙니다. 열린 상태로 유지하는 가장 좋은 방법은 무엇입니까? Google로드가 검색되었지만 걱정하지 않아도되는 codeblocks에 익숙하지만 Visual Studio를 조금씩 사용하고 VS를 사용하여 콘솔을 닫습니다. interwebz에는 오픈 방식을 유지하는 몇 가지 다른 방법이 있지만, 대부분은 나쁜 코딩 기술이라고 읽었습니다. 모든 사람이 선호하는 방법은 무엇입니까?콘솔 닫기 문제를 해결하는 모범 사례는 무엇입니까?
답변
cin
는 건망증이 도출하기 위해 심하게 우아하지만 간단합니다 : 당신은 문자/* 편집 *을 입력/Enter 키를 누르 때까지 열려있는 창을 보유하고
{
char c;
std::cin >> c;
}
.
std::cin.get()
당신이 얼마나 쉽게 익숙해 지 느냐에 따라 "쾅쾅 소리가 나지 않았 으면 좋겠어!"라는 위험이 있습니다. 2 키 입력보다 operator>>(istream &)
.
둘 다 프로그램 접근 가능 방식으로 입력 한 문자의 값을 반환한다는 점에서 두 문자가 모두 다르다. 따라서 빈번히 발생하지 않는 한 하나의 kludge가 다른 문자로 연결되는 경우 무엇을 기반으로 switch 문을 작성할 수 있습니다. (예를 들어) 즉시 종료하고, 로그에 값을 쓰고, 다시 실행하십시오.
매우 일반적인 것은 주 응용 프로그램 코드가 닫힌 후 콘솔에서 키를 읽는 코드를 입력하는 것입니다 . 독서 된 키 스트로크는 버려지고 콘솔은 열리게됩니다.
꽤 귀찮은 것은 아니지만 - 자주 디버깅 정의에 포함 시키므로 디버깅하는 동안 콘솔이 열려 있습니다. 릴리스 중에는 대개 VS 내부에서 실행되지 않으며 명령 줄에서 실행하면 더 이상 문제가되지 않습니다.
나는 디버그 #define 아이디어를 좋아합니다. 중단 점보다 확실히 좋습니다. – AShelly
항상 디버거에서 실행되므로 return 문에 중단 점을 main()
에서 설정하십시오.
디버거는 가장 좋은 친구이며 모든 기회에 이점을 사용하도록 배우고 (조기에 배우십시오).
내가 이것을 할 때마다, 나는 끊임없이 자신이 crt0.c에 들어가는 것을 발견한다. 그것은 정말로 짜증 스럽다. – AShelly
그 것이다 프로그램을 실행하기 위해 당신이 할 수있다, 또는 ... 어떤이 콘솔 프로그램을 실행의 예상 방법이 될 것입니다, 콘솔에 약간의 배치 파일을
을 프로그램을 실행
REM batch file to launch program
yourprogram.exe
PAUSE
및 PAUSE
cmd.exe 명령은 사용자에게 아무 키나 누르라는 메시지를 표시합니다.
사실 꽤 쉽습니다. VS에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Properties를 선택하십시오. 디버그 섹션에서 외부 프로그램을 시작하도록 지시 할 수 있습니다. 이 경우 응용 프로그램을 시작하는 배치 파일이됩니다. –
전화 당신이 주요의 말에 반환하기 전에이 기능 :
void onEnd()
{
printf("Press any key to exit...");
_getch();
}
나는 비주얼 스튜디오를 사용하고 있는데 내가 Ctrl 키 + F5 키 입력을 사용하여 난 그냥 그것을 실행 디버깅을 필요로하지 않는 경우 –이며 콘솔이 닫히지 않습니다.
cin.get()
가 나는 그것이 시스템보다 ("PAUSE") 적은 비용이 많이 드는 듣고 너무 POSIX 시스템에서 작동합니다
내가 사용합니다. 자세한 내용은 link입니다.
비용이 많이 드는 것은 무엇이 있습니까? 코드의 핵심은 키를 누를 때까지 터미널 창을 계속 돌리는 것입니다. 'system ("PAUSE")가 얼마나 느린지를 예를 들어. 귀하의 반사 신경 ;-) –
무엇이든하는 유혹에 저항하십시오. 제대로 작동 한 명령 행 프로그램은 실행 종료 후 종료 코드를 통해 상태를보고합니다. 이를 통해 자동화 된 환경에서 스크립트 작성이 가능하고 '훌륭한 시민'이 될 수 있습니다. 대화식 환경에서도 왜 디버깅 환경 때문에 키 누르기를 강요해야합니까?
디버깅 대신 실행하면 Visual Studio는 응용 프로그램이 종료 된 후에도 일시 중지되는 콘솔 창을 열어 여전히 출력을 볼 수 있습니다. 디버그 할 때 동작이 다른 이유는 모르겠다. 아마도 중단 점을 사용할 수 있기 때문이다. 다양한 출력 단계에서 출력을 보려면 관련 출력 문 다음에 중단 점을 배치하거나 main
끝에서 여러 가지 출력을 볼 수있다. '예외 발생시 중지'옵션.
이유가 무엇이든, 디버깅 경험을 향상시키기 위해 내 응용 프로그램의 동작을 손상시키지 않아도되는 일은 결코 없었습니다.
+1 동작의 차이에 대 한 디버깅. –
이 스레드의 "do not do that"응답이 잘림 보일 수도 있지만 상당히 합리적입니다. 내가 잘 실행하는 데 사용되는 gtest 스위트를 디버깅 중이기 때문에이 질문에 대해 일어 났지만 이제는 시작될 때 신비하게 충돌합니다. 콘솔에서 실행하면 "blah.exe가 작동을 멈췄다"는 대화 상자가 나타납니다. 그러나 디버거에서 실행하면 콘솔이 일시적으로 팝업되고 사라지고 프로그램은 0 상태로 종료됩니다.
나는이 행동의 차이가 얼마나 이상했는지 생각해 봤어야했는데, 대신 나는 "어, 남자 --- 그 콘솔 창을 켜서 그대로 말하면 볼 수 있습니다."라고 생각했습니다. 권리?
내가 작업하고있는 머신 (내 동료)이 '--gtest_filter = * testMsg *'로 설정된 디버거에 대한 '명령 인수'를 가지고있는 것으로 나타났습니다. 나는 곧바로 이것을 알아 차렸다. 그러나 필자는 필터에 맞는 모든 테스트가 최근 커밋에서 이름이 바뀌 었음을 알지 못했다. 그래서 디버거에서 시작할 때 gtest는 실행할 테스트를 찾지 못하고 단순히 종료되었습니다. 내 인생의 또 다른 90 분 나는 결코 돌아 오지 않을 것이다. (-_-) 무릎 덩어리 반응으로 문제를 해결하기 위해 콘솔 창을 열어야한다고 생각하지 않았다면이 타르 아기를 훨씬 더 버렸을 수도 있습니다 ...
- 1. 모범 사례는
- 2. register_shutdown_function() - 모범 사례는 무엇입니까?
- 3. 테스트의 모범 사례는 무엇입니까?
- 4. 모범 사례는
- 5. 모범 사례는
- 6. 모범 사례는
- 7. 모범 사례는
- 8. 콘솔 응용 프로그램에서 반환하는 오류 코드와 관련된 모범 사례는 무엇입니까?
- 9. '비공개'공개 URL의 모범 사례는 무엇입니까?
- 10. WebSocket 서버의 모범 사례는 무엇입니까?
- 11. 미들웨어 API의 모범 사례는 무엇입니까?
- 12. WPF : 레이아웃의 모범 사례는 무엇입니까
- 13. .htaccess RewriteRule 모범 사례는 무엇입니까?
- 14. Xcode 파일 관리. 모범 사례는 무엇입니까?
- 15. GC_concurrent 문제를 해결하는 방법은 무엇입니까?
- 16. 방향 문제를 해결하는 방법은 무엇입니까?
- 17. 목록으로이 문제를 해결하는 방법은 무엇입니까?
- 18. 모범 사례는 예나 및 RDF
- 19. Java : MVC에서 양식 제출 : 모범 사례는 무엇입니까?
- 20. ASP.NET 응용 프로그램 배포의 모범 사례는 무엇입니까?
- 21. .NET에서 개인 메서드를 테스트하는 모범 사례는 무엇입니까?
- 22. 대규모 플래시 제작을위한 모범 사례는 무엇입니까?
- 23. mvc2 암호 확인 필드의 모범 사례는 무엇입니까?
- 24. nServiceBus 및 보안 : 모범 사례는 무엇입니까?
- 25. SSIS 패키지를 개발하는 모범 사례는 무엇입니까?
- 26. 문자열 연산이있는 디버그 명령문의 모범 사례는 무엇입니까?
- 27. Android에서 Sqlite를 쿼리하는 동안 모범 사례는 무엇입니까?
- 28. 대규모 연속 통합의 모범 사례는 무엇입니까?
- 29. WPF에서 Databinding 및 ObservableCollections의 모범 사례는 무엇입니까?
- 30. 엔티티 모델 레이아웃을위한 모범 사례는 무엇입니까?
std :: cin.get()은 같은 효과를 가지며 더 짧습니다. –
문자를 얻을 수있을 때까지 창을 보유합니다. 어느 것이 버퍼가 플러시 될 때까지 (cin은 버퍼링된다). 그래서 사용자가 엔터를 누르거나 많은 문자를 입력하고 버퍼를 채울 것을 요구합니다. –
@ robson3.1415, @martin 편집을 참조하십시오 :-) –