c++

읽은 문자 개수 알아내기

폭주강아지 2018. 11. 22. 22:35

istream의 gcount() 멤버 함수를 이용하여 최근에 읽은 문자의 개수를 알아낼 수 있다.


int gcount() //최근에 입력 스트림에서 읽은 바이트수(문장의 개수)리턴. <Enter> 키도 개수에 포함


getline()으로 한 라인을 읽으면 몇 개의 문자를 읽었는지 알 수가 없다. 

gcount()를 이용하면 <enter>키를 포함하여 실제 읽은 문자의 개수를 알아낼 수 있다.


ex) char line[80];

cin.getline(line,80);

int n = cin.gcount(); //cin.getline()에서 읽은 문자의 개수 리턴


위의 코드에서 사용자가 'Hello\n' 를 입력하면 cin.getline(line,80)가 읽은 문자의 개수는 6이다.

그러므로 cin.gcount()는 6을 리턴한다. 그리고 line[] 배열에는 'Hello\0'가 들어 있다.


하지만 get()으로 라인을 읽는 경우 사용자가 똑같이 입력하면 cin.gcount()는 5를 리턴한다..


ex) char line[80];

cin.get(line, 80);

int n = cin.gcount();


n = 5


getline()과 달리 get()은 '\n'을 cin의 스트림 버퍼에 그대로 남겨 두기 때문이다.