나무 숲

[C++] cin 에서 쓸만한 것들 ( istream 라이브러리) 본문

Career

[C++] cin 에서 쓸만한 것들 ( istream 라이브러리)

wood.forest 2017. 4. 13. 00:07

C++에서는 입력을 받을때 cin을 사용합니다. cin은 input/output의 input이므로 istream 부분입니다.

오늘은 이러한 cin의 기능들 중 쓸만하다고 생각되는 것들을 소개합니다.



0. cin.getline();


http://woodforest.tistory.com/141 <<예전에 이곳에 포스팅했었네욤

다시 간단히 정리하자면 띄어쓰기/공백을 포함한 문자열을 입력받을 수 있습니다.








1. cin.ignore();


이름에서도 알 수 있듯이 무언가를 무시합니다. 무엇을 무시하느냐 하면 조건에 따라 값을 받아들이지 않는 것인데요..

응용해보겠습니다.


(1) getline(cin, str)이 동작하지 않을 때


제가 방금 겪었습니다 ㅠ


 int n; string str;

 cin>>n;

 getline(cin, str);


위 코드대로 실행하면 정수 n을 입력받은 후에 문자열을 입력받지 않고 바로 다음 코드로 넘어갑니다.

버퍼에 정수값을 입력한 뒤 누른 엔터가 그대로 남아있어 getline에 들어가기 때문입니다.

getline을 이용하기 위해서는 정수값을 입력받은 뒤 cin.ignore()을 사용해 줍니다. 

입력 버퍼의 모든 내용이 제거됩니다.


int n; string str;

 cin>>n;

 getline(cin, str);

 ->

 int n; string str;

 cin>>n;

 cin.ignore();

 getline(cin, str);




(2) 특정 문자가 나올때까지 읽어들이지 않을 때




콤마(,)로 나뉘어진 숫자들 중 숫자만 추출해보려 한 내용입니다.

cin.ignore(n, delim)을 이용합니다.

n은 버릴 문자의 수를 나타내고, delim은 기준값을 의미합니다. 기본값은 EOF입니다.


결과


마찬가지로 띄어쓰기( )로 이루어진 문자열에서 각 단어의 가장 앞 글자만 추출하는 것이 가능합니다.











2. cin.get();



char ch = cin.get()


으로 char을 하나 입력받을 수 있습니다.


char str[256];

 cin.get (str,256); 


으로 string 형식으로 입력받을 수 있습니다.













3. cin.clear();


버퍼의 내용을 제거합니다.








4. cin.fail()


참/거짓을 반환합니다.

예를 들어 int형 변수인 x에 char을 입력받는 것은, 해당 char의 ascii값이 들어가는 것이 아니라, 입력 실패입니다. 이러한 경우 cin.fail()은 참이 됩니다.










-

http://www.cplusplus.com/reference/istream/istream/ignore/

728x90
반응형
Comments