C++에서 ignore() 함수 사용

Jinku Hu 2023년10월12일
  1. ignore() 기능을 사용하여 원하지 않는 명령 줄 사용자 입력 무시
  2. ignore 함수를 사용하여 C++에서 사용자 입력의 이니셜 추출
C++에서 ignore() 함수 사용

이 기사에서는 C++에서ignore()함수를 사용하는 방법에 대한 몇 가지 방법을 설명합니다.

ignore() 기능을 사용하여 원하지 않는 명령 줄 사용자 입력 무시

ignore() 함수는std::basic_istream의 멤버 함수이며 다른 입력 스트림 클래스에 상속됩니다. 함수는 지정된 구분 기호 (포함)까지 스트림의 문자를 삭제 한 다음 스트림의 나머지를 추출합니다.

ignore는 두 개의 인수를받습니다. 첫 번째는 추출 할 문자의 수이고 두 번째는 구분 문자입니다.

다음 예는cin 객체에서ignore 함수를 호출하여 3 개의 숫자 만 저장하고 다른 사용자 입력을 무시하는 방법을 보여줍니다. ignore함수의 첫 번째 인수로 numeric_limits<std::streamsize>::max()를 사용하여 특수한 경우를 적용하고 문자 수 매개 변수를 비활성화합니다.

#include <fstream>
#include <iostream>
#include <limits>
#include <sstream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::istringstream;
using std::numeric_limits;
using std::string;

int main() {
  while (true) {
    int i1, i2, i3;
    cout << "Type space separated numbers: " << endl;
    cin >> i1 >> i2 >> i3;
    if (i1 == 0) exit(EXIT_SUCCESS);
    cin.ignore(numeric_limits<std::streamsize>::max(), '\n');
    cout << i1 << "; " << i2 << "; " << i3 << endl;
  }
  return EXIT_SUCCESS;
}

출력:

Type space separated numbers:
238 389 090 2232 89
238; 389; 90

ignore 함수를 사용하여 C++에서 사용자 입력의 이니셜 추출

ignore기능을 사용하는 일반적인 방법은 원하는 구분 기호에 대한 입력 스트림을 찾고 필요한 문자 만 추출하는 것입니다.

다음 코드 샘플에서는 공백으로 구분 된 문자열의 이니셜 만 추출되도록 사용자 입력이 구문 분석됩니다. 스트림에서 단일 문자를 추출하기 위해cin.get을 두 번 사용하고 있지만cin.ignore 문을 사용하면 다음 공백을 포함한 모든 문자가 삭제됩니다.

#include <fstream>
#include <iostream>
#include <limits>
#include <sstream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::numeric_limits;
using std::string;
using std::vector;

int main() {
  char name, surname;
  cout << "Type your name and surname: " << endl;
  name = cin.get();
  cin.ignore(numeric_limits<std::streamsize>::max(), ' ');
  surname = cin.get();

  cout << "Your initials are: " << name << surname << endl;

  return EXIT_SUCCESS;
}

출력:

Type your name and surname:
Tim Cook
Your initials are: TM
작가: 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

관련 문장 - C++ IO