c++
cin 과 >>의 허점과 해결방법
폭주강아지
2018. 11. 7. 21:52
>>연산자는 공백문자를 만나면 공백전 문자열만 인식한다.
예를들어,
backjoon comeon 이라 쳤는데
앞에 공백전 backjoon만 입력결과가 나오는 것을 확인할 수 있다.
해결방법은 getline()함수를 사용하면 된다.
이와 같이 getline함수를 써서 공백이 포함된 문자열을 입력받을 수 있다.
예제 하나를 풀어보자.
Ex) '.'문자가 입력될 때까지 도시의 이름을 문자열로 입력받아 char city[21] 배열에 저장하는 cin.getline() 호출 코드를 보여라. 도시의 이름은 최대 20글자이며, 영문자로 입력하는 것을 가정한다.
요번엔 string을 안쓰기에 #include<string>헤더를 안넣어주었고
cin객체의 getline()멤버함수를 사용해서
cin.getline(키보드로부터 읽은 문자열을 저장할 배열, 배열의 크기, 문자열 입력 끝을 지정하는 구분문자)를 사용해
.을 찍어서 결과창에 tokyo.을 찍어서 tokyo가 나오는 것을 확인할수있다.
만약 cin.getline(city, 21); 로 하게 되면 cin.getline(city,21,'\n'); 과 동일한 문장이다.