2016-09-08 11 views
4

방금 ​​컴퓨터 과학 연구를 시작했습니다. 프로그래밍 선생님은 C++을 선택하여 절차 프로그래밍을 가르치기 때문에 코드 샘플과 연습을 제공합니다. 첫 번째 샘플은 CLI "올바른 번호 찾기"게임이었습니다. 실제로 첫 번째 과제는 단순히 소스 코드를 다시 입력하여 컴파일하고 실행하는 것이 었습니다. 나는 몇 년 동안 리눅스를 사용 해왔다. (나는 컴퓨터가 아니지만) 코드를 컴파일 할 때 실패했다. 오류 로그를 보면 제 선생님이 유닉스 사용자를 고려하고 있지 않은 것 같습니다.conio.h 및 ncurses.h를 피하면서 상호 운용 가능한 코드로 CLI에서 출력 창을 유지하고 화면을 정리하는 간단한 방법이 있습니까?

내가 거기에 읽은대로 그녀는, MS-DOS 컴파일러에 대한 오래된 헤더 인 conio.h 라이브러리를 호출 : 나는 Windows 전용이기 때문에 system("cls");getch();의 사용이 다른 오류를 가지고 https://stackoverflow.com/a/8792443/6723830
기능을 배웠습니다.

연구 중에 이러한 기능에 대한 적절한 대안을 찾을 수 없었습니다. 적어도 현재의 프로그래밍 수준에 맞는 쉬운 솔루션은 아닙니다. ncurses.h을 사용하려고했지만 실제로는 흥미로운 을 읽었습니다.하지만 NCurses는 잔인한 것으로 묘사됩니다 ...

따라서 화면을 정리하고 사용자가 어떤 열쇠를 친다 고요? NCurses는 지나치게 잔인하다고 말했거나 현재로서는 최상의 솔루션입니까?
앞으로의 과제에서 이러한 CLI를 만들어야 할 것입니다. 물론 MS 전용 함수를 사용하여 불평하지는 않지만 상호 운용성있는 코드를 생성 할 수는 있습니다.

+1

당신은 당신이 [유닉스에서 getch]을해야 할 수도 있습니다 –

+0

및 시스템 ("유닉스 콘솔에 분명히 어떤 명령 화면") (http://stackoverflow.com/에 ("CLS")를 시스템을 대체 할 수 질문/7469139/what-is-get-getche-in-linux) –

+0

'getch'의 블로킹 동작은 크로스 플랫폼'std :: cin.get()'에서 모방 될 수 있습니다 – jaggedSpire

답변

4

콘솔 창을 취소하는 가장 일반적인 휴대용 방법으로 간단하게 출력에 개행 문자의 무리, 같은 함수를 작성하는 것입니다

void clearScreen() 
{ 
    for(int i = 0; i < 15; ++i) 
     std::cout << '\n'; 
} 

을 그리고 당신은 일시 정지 기능을 쓸 수있는 입력을 개최, 뭔가 같은 :

void pause() // wait for input and discard any unnecessary input 
{ 
    std::cin.get(); 
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
}