C++에서 사용자 입력을 기다리는 방법

Jinku Hu 2023년10월12일
  1. cin.get()메서드를 사용하여 사용자 입력을 기다립니다
  2. getchar 함수를 사용하여 사용자 입력 대기
  3. getc 함수를 사용하여 사용자 입력 대기
  4. 사용자 입력을 기다리기 위해system("pause")사용하지 않기
C++에서 사용자 입력을 기다리는 방법

이 기사에서는 사용자 입력을 기다리는 C++ 메서드를 소개합니다. 다음 자습서에서는 사용자 입력 내용이 프로그램 실행과 관련이 없다고 가정합니다.

cin.get()메서드를 사용하여 사용자 입력을 기다립니다

get()std:cin 멤버 함수로, 스트림에서 문자를 추출하는>>입력 연산자와 거의 유사합니다. 이 경우 사용자 입력 처리에 관심이없고wait 기능 만 구현하면되는 경우 인수없이get 함수를 호출 할 수 있습니다. 그러나이 함수는 Enter 키를 누르면 반환됩니다.

#include <iostream>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<char> arr = {'w', 'x', 'y', 'z'};
  int flag;

  flag = cin.get();

  for (auto const& value : arr) cout << value << "; ";
  cout << "\nDone !" << endl;

  return EXIT_SUCCESS;
}

출력:

w; x; y; z;
Done !

getchar 함수를 사용하여 사용자 입력 대기

getchar 함수는 입력 스트림 (stdin)에서 단일 문자를 읽기위한 C 표준 라이브러리 함수입니다. 앞의 것과 마찬가지로이 메서드는 반환 할 새 줄 문자 (즉, Enter 키를 누름)를 예상합니다. getchar는 오류가 발생하거나 스트림이 끝날 때 eof를 반환합니다.

#include <iostream>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<char> arr = {'w', 'x', 'y', 'z'};
  int flag;

  flag = getchar();

  for (auto const& value : arr) cout << value << "; ";
  cout << "\nDone !" << endl;

  return EXIT_SUCCESS;
}

getc 함수를 사용하여 사용자 입력 대기

대안으로 위의 예를getc 함수로 대체 할 수 있습니다. getc는 주어진 입력 스트림에서 읽기 위해FILE *stream 인수를 전달하지만이 경우 터미널 입력과 일반적으로 관련된 표준 입력 스트림 인stdin을 전달합니다. 이 함수는 Enter키를 눌렀을 때도 반환됩니다.

#include <iostream>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<char> arr = {'w', 'x', 'y', 'z'};
  int flag;

  flag = getchar();

  for (auto const& value : arr) cout << value << "; ";
  cout << "\nDone !" << endl;

  return EXIT_SUCCESS;
}

사용자 입력을 기다리기 위해system("pause")사용하지 않기

system 함수는 쉘 명령을 실행하는 데 사용되며 명령 이름은 문자열 리터럴로 전달됩니다. 따라서pause가 인수로 전달되면 해당 명령을 실행하려고 시도합니다. 이는 Windows 플랫폼에서만 사용할 수 있습니다. system("pause")의 이식 불가능한 방법을 사용하는 것보다 위에 나열된 메소드로 사용자 정의 대기 기능을 구현하는 것이 가장 좋습니다.

#include <iostream>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<char> arr = {'w', 'x', 'y', 'z'};
  int flag;

  system("pause");

  for (auto const& value : arr) cout << value << "; ";
  cout << "\nDone !" << endl;

  return EXIT_SUCCESS;
}

출력:

sh: 1: pause: not found
w; x; y; z;
Done !
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook