차이점

  1. 'cin'은 'white space' 전까지만, 'getline'은 'white space' 까지 입력을 받는다. (둘다 '\n(엔터)' 만나면 종료)
  2. 'cin'은 처음으로 들어오는 'white space' 입력은 무시하고, 이후의 입력을 받는다.
  3. 'getline'은 처음으로 들어오는 'white space' 입력을 받는다. (입력을 받지만 '\n'(엔터) 같은 경우에는 저장 X)

 

Ex)

입력이  a  b  c  d  '\n'  e  f  '\n'  g  '\n'  이라고 하면,

 

cin >> first;       

// first에  a  b  c d 저장  ->  '\n'  e  f  '\n'  g  '\n' 남음 -> 1번 조건에 의해서 '\n' 입력 무시

 

cin >> second;   

// second에  e  f 저장  ->  '\n'  g  '\n' 남음  ->  2번 조건에 의해서 맨 앞의 '\n' 입력 무시

 

getline(cin, third); 

// third가  '\n'  입력 받지만 저장 X  ->  g  '\n' 남음  ->  3번 조건에 의해서 맨 앞의 '\n' 입력 받음

 

해결법

  1. 'cin'과 'getline' 사이에 cin.ignore()를 선언하여 \n 제거
  2. 'cin'과 'getline' 사이에 string buffer, getline(cin, buffer) 를 선언하여 \n 제거

 

+ Recent posts