최상의 답변
Cin으로 더 많은 정보를 얻을 수 있습니다.
사용 , cin.get , cin.getline 및 cin. 무시
>> 연산자 (cin 포함) 사용
The> > 연산자는 사용자가 입력 한 공백이 아닌 다음 문자를 문자 또는 문자 배열로 읽으려는 경우에만 사용할 수 있습니다. 첫 번째 공백 뒤에 오는 인쇄 가능한 모든 문자는 무시되고 변수에 저장되지 않습니다. 다음과 같은 문을 사용하십시오.
cin >> UserExplanation;
예를 들어 원하는 경우 사용자로부터 공백이 포함 된 전체 문장을 얻습니다. 이 경우 cin 멤버 함수 get 또는 getline 을 사용하는 것이 더 좋습니다. .
질문 : null 종료자가 문자 배열 UserExplanation 끝에 자동으로 저장됩니까?
cin.get 사용
형식화되지 않은 get 멤버 함수는 두 가지 예외를 제외하고 >> 연산자처럼 작동합니다. 첫째, get 함수는 공백 문자를 포함 하는 반면 추출기는 ios :: skipws 플래그가 설정된 경우 (기본값) 공백을 제외합니다. 둘째, get 함수는 묶인 출력 스트림 (예 : cout)을 플러시 할 가능성이 적습니다.
get 함수의 변형은 버퍼 주소와 읽을 최대 문자 수를 지정합니다. 다음 예에서 볼 수 있듯이 특정 변수로 전송되는 문자 수를 제한하는 데 유용합니다.
#include
void main()
{
char line[25];
cout << " Type a line terminated by carriage return\n>";
cin.get( line, 25 );
cout << " " << line;
}
이 예에서는 최대 24 자 및 종료 문자를 입력 할 수 있습니다. 나머지 문자는 나중에 추출 할 수 있습니다.
cin.getline 사용
getline 멤버 함수는 다음과 유사합니다. 기능을 얻으십시오. 두 함수 모두 입력을 위해 종료 문자를 지정하는 세 번째 인수를 허용합니다. 기본값은 개행 문자입니다. 두 함수 모두 필수 종료 문자로 한 문자를 예약합니다 . 그러나 get은 스트림에 종료 문자를 남기고 getline은 종료 문자를 제거합니다.
다음 예제는 입력에 종료 문자를 지정합니다. 스트림 :
#include
void main()
{
char line[100];
cout << " Type a line terminated by "t"" << endl;
cin.getline( line, 100, "t" );
cout << line;
}
cin.ignore 사용
cin.ignore (int nCount = 1, int delim = EOF);
매개 변수
nCount-추출 할 최대 문자 수입니다. delim-구분 문자 (기본값은 EOF)입니다.
참고
최대 nCount 문자를 추출하고 삭제합니다. 구분 기호 구분자가 추출되거나 파일 끝에 도달하면 추출이 중지됩니다. delim = EOF (기본값)이면 파일 끝 조건 만 종료됩니다. 구분 문자가 추출됩니다.
Answer
cin.ignore ()는 입력 버퍼에서 하나 이상의 문자를 무시 / 삭제하는 미리 정의 된 함수입니다.
전제 조건 : 1. cin 은 공백을 처리합니다. 즉 " ", "\ t ", "\ n 구분 문자로 ".
2. 여기에서 표준 입력 장치 인 키보드에서 무엇이든 읽을 때 먼저 입력 버퍼로 이동합니다. 입력 버퍼는 그 앞에 들어오는 모든 정보를 보유하는 위치입니다. 처리를 위해 CPU로 계속 이동합니다.
문제 : 1. 사용자로부터 "문자열"을 읽으려고한다고 가정합니다. char myname [10];
2. 어떻게 든 cin.getline () 대신 cin을 사용하게됩니다. cin >> myname;
3. "ABC"를 입력하고 Enter 키를 누릅니다. ABC를 차지하고 다음 "\ n"를 구분자로 처리합니다.결과적으로 "\ n"은 읽히지 않고 입력 버퍼에 남아 있습니다.
4. 따라서 여기에서 cin.ignore ()는 입력 버퍼에 남아있는 읽지 않은 문자를 무시합니다.
해결 방법 : 원하는 경우 상황을 피하고 cin을 사용하여 문자열을 입력하지 않도록 유의하세요. 및 tada, 문제가 해결되었습니다 !!