나무 숲
[C++] cin 에서 쓸만한 것들 ( istream 라이브러리) 본문
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/
'Career' 카테고리의 다른 글
GCC 컴파일 과정 (0) | 2017.04.18 |
---|---|
프로그래밍 오류의 종류 - 컴파일 에러/런타임 에러/링킹 에러/논리 에러/파스 에러 (1) | 2017.04.15 |
매개변수로서의 스택 사용 (0) | 2017.04.11 |
직업/ 국가정보원 (국정원) NIS (0) | 2017.04.09 |
폰 노이만 구조 vs 하버드 구조 vs 수정된 하버드 구조 (0) | 2017.03.30 |