2010-11-19 8 views
0

cin이 C++의 콘솔 화면으로 인쇄되지 않도록하려면 어떻게해야합니까? ENTER를 누를 때까지 cin의 콘솔 출력을 막는 방법

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout << "Hello World..." << endl; 

    cin.clear(); 
    cout << "Press ENTER to Continue..." << endl; 
    cin.ignore(); 

    exit(0); 
} 

그래서 멀리 키보드의 사용자 걸림, 아무것도 일어나지 않을 경우 :이 간단한 프로그램을 감안할 때. 이것은 현재 잘 작동하지만 cin은 키 누르기를 콘솔에 덤프합니다. 이 동작을 어떻게 막을 수 있습니까?


편집 : 저는 Visual Studio 2010에서 일하고 있습니다. 플랫폼과 관련이없는 무언가를 원하기 때문에이 간단한 질문을드립니다.

+2

http://www.parashift.com/c++-faq-lite/input-output.html#faq-15.18 –

+0

@Fred Wow 정말요? 그래서 제가 사용할 수있는 표준이 없습니다. 흠, 그럼 사실상 아무것도? TIL ... – Urda

답변

5

Windows의 경우 SetConsoleMode이 필요합니다.

표준 플랫폼 독립적 인 방법은 없습니다. 물론 disable_echo() 함수를 작성하고 #if _WIN32#if __LINUX__을 사용하여 플랫폼 독립적 인 인터페이스의 플랫폼 별 구현을 제공 할 수 있습니다.

+0

Linux/UNIX에서 빈 프롬프트와 함께'getpass()'를 사용할 수 있다고 생각합니다. http://www.manpagez.com/man/3/getpass/ –

+0

나는이 길을 시도 할 것이다. 감사! – Urda

+0

Unixen에서 Ignacio는 올바른 방향으로 포인터를 제공했습니다. [여기 샘플 코드입니다] (http://cscene.unitycode.org/topics/unix/nossenus-termios.xml.html). –

0

ECHO 모드를 전환하려면 termios(3) 기능을 사용해야합니다.

+0

나는이 플랫폼에 독립적 인'termios'에 익숙하지 않다? 저는 현재 Visual Studio 2010에서 현재 작업하고 있습니다. – Urda

+3

플랫폼에 독립적 인 방법은 없습니다. –

+0

글쎄, 나는 그것을 결코 알지 못했다. Hmm – Urda

0

할 수 없습니다. C++은 언어 사양으로서 키보드에 관한 것이 아니라 순수하게 플랫폼의 결정이며, 불행히도 다양한 플랫폼은 터미널과 관련이없는 모든 것에 대한 사양에 동의하지 않았습니다 (심지어 원격에서도).

걱정하지 않거나 의지하지 마십시오.

관련 문제