안녕하세요 카이조쿠BM 입니다.
오늘은 개행문자에 상관없이 문자열의 한 행 전체를 읽어 들일 방법으로 <istream> 클래스의 메소드를 살펴보겠습니다.
대표적으로 <istream>에는 입력에 관한 메소드로 getline(), get() 두가지 방법이 있습니다.
이 두가지 메소드에 대하여 알아 봅시다.
1. getline()
getline()은 개행문자를 폐기 시킵니다. 대신 문자열의 끝에서 Enter를 쳤을 경우 개행문자를 널 문자로 바꾸어서 간주합니다.
"\n" -> "\0" 으로 말이죠
getline은 두가지의 전달 인자를 사용합니다.
1. 입력한 행을 저장할 배열의 주소
2. 입력 받을 문자들의 크기
다음 코드와 같이 사용 됩니다.
위 코드를 보시면 입력받을 공간이 name과 dessert 두개의 배열이 존재하죠?
각각의 배열에 사이즈는 20으로 잡아 놓고 getline을 이용해서 문자열을 한 행으로 입력받아 처리하게 됩니다
기억 해야 할 내용은 getline은 개행 문자를 폐기 시킨다!!
마지막 Enter로 입력된 개행 문자는 널 문자로 바꾸어 처리 한다!! 이 두가지 입니다.
2. get()
get은 별난 녀석으로 알려져 있습니다.
이 녀석은 문자열의 끝에서 Enter 입력시 개행문자를 입력큐에 남겨 놓습니다.
근대 이녀석은 자신 스스로 개행문자를 처리가 가능합니다. 그래서 별난 놈이라는거죠
get을 사용시 전달인자를 아무것도 주지 않으면 이녀석은 입력 버퍼에 있는 하나의 문자를 어떤 문자이든 간에
처리를 합니다. 그래서 개행문자를 처리 가능하죠.
get의 전달인자는 getline()과 동일 합니다.
다음 소스 코드를 살펴 봅시다.
소스코드에서 보다 시피 get(name, ArSize).get() 을 연속적으로 사용하죠 ?
입력을 받고 마지막 개행 문자를 처리하겠다는 의미 입니다.
cin은 객체로서 어떤 클래스에 의해서 생성이 되겠죠? 다음시간에는 이러한 C++ I/O 스트림 계층 구조에 대하여 알아보도록 하죠
이상 카이조쿠BM 이였습니다.
'IT Study > C++' 카테고리의 다른 글
C++_01. #include<climits> (0) | 2019.04.30 |
---|