본문 바로가기

소프트웨어/C/C++

c++] cin말고 띄어쓰기를 구분짓지않는 입력 getline

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)로 받으면 띄어쓰기를 무시하고 문자열을 받을 수 있습니다!!