소프트웨어/C/C++
c++] cin말고 띄어쓰기를 구분짓지않는 입력 getline
cs만두
2013. 9. 27. 15:32
cin을쓰면 알고리즘문제와같이 문장을입력받을경우 띄어쓰기를 구분한다.
그래서 getline(cin, 버퍼) 를쓰면 띄어쓰기를 무시하고(그냥 케릭터 " "로 구분) string으로 저장된다.
추가1.
getline(cin, 버퍼, '마지막 char');
3번째인자를쓰면 cin의 끝을 지정해할 수 있다.
default는 '\n'인것같고, 만약 '*'와 같이 '\n'이외의 char를 사용하고싶다면
getline(cin, buffer, '*'); 라고 쓰면 된다.
주의할점은 "asdf ghjk*" 이렇게 입력을하고 '엔터'를치면 버퍼에는 "asdf ghjk"가 저장되는데,
이때 '엔터'를 쳤기때문에 "asdf ghjk"의 입력과 '\n'이 입력되었다고 판단한다. 그래서 의도치않게 두번 input이 들어간다.
이 문제는 getline후에 버퍼.ignore()를 해주면 엔터가 무시되서 해결된다.
추가2.
이 글에 C언어로 검색해서 들어오시는 분이 많아서 추가합니다.
c언어에서는 gets(char* buff)로 받으면 띄어쓰기를 무시하고 문자열을 받을 수 있습니다!!