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
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