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)로 받으면 띄어쓰기를 무시하고 문자열을 받을 수 있습니다!!
'소프트웨어 > C/C++' 카테고리의 다른 글
c++] 인라인함수 (0) | 2013.10.04 |
---|---|
c] 130929 C언어 Basig Training (0) | 2013.09.29 |
c++수업 130927 (0) | 2013.09.27 |
c] DELAY 적용하기 (0) | 2013.08.27 |
c] gets,puts 및 cmd Clear 및 명령프롬프트 옮기기 (0) | 2013.08.27 |
자료구조] 재귀를 이용한 이진트리 순환탐색 (0) | 2013.08.19 |
c/c++] malloc에서 HEAP CORRUPTION DETECTED 오류가 날땐.. (0) | 2013.08.18 |