getline과 I/O

상황에 따른 입력 방식을 알아보자.


Case 1

- 몇 개를 입력받을 지 모르는 경우

while문을 이용해서 EOF임을 이용하거나, cin » a » b 가 입력이 되어야지만 참이고 입력이 불가하면 거짓이 된다는 판정을 이용해서 이런식으로 입력받을 수 있다.

while(cin»a»b)

**cin 함수는 객체를 반환하는데, while이나 if문 안에서는 예외적으로 bool형 자료형을 반환한다.

Case 2

- 공백이 있는 문자열을 입력받는 경우

getline 함수를 이용한다. getline 함수는 띄어쓰기까지 포함해서 문자열로 저장 가능하다.

cin.getline(A, B, C);

인수 설명

  • A : cin 이 입력받은 문자열을 저장하는 변수명
  • B : 해당 문자열의 크기
  • C : 입력받은 문자들을 어디까지 저장할지(index) 결정

예를 들어, str이라는 사이즈 101짜리의 문자열에 엔터(‘\n’)가 나올 때까지 입력받게 하려면 다음과 같다.

cin.getline(str, 101, ‘\n’);

*파생형 : getline(cin,str,s); // 표준입력방식(cin)으로 str라는 변수에 ‘s’가 나올때까지 저장