본문 바로가기
programming/c++

[c++] 표준 입력

by 힐무새 2017. 12. 2.

<iostream> 헤더 파일에서 cin 객체를 사용하여 표준 입력을 받을 수 있다.


ex) 

int num;

cin>>num;


문자열을 입력받고자 한다면 <string> 헤더를 추가하면 연산자 오버로딩으로 마찬가지로 가능하다. 하지만 공백, 개행문자는 무시된다.


ex) 

string str;

cin>>str;


입력으로 "ab def"를 입력하면 str에는 "ab"까지만 입력된다.


공백, 개행문자를 받기 위해서는 cin.get()을 사용하면 된다. cin.get()은 1개의 문자만을 입력받는다.


ex) 

char a, b, c;

a=cin.get();

b=cin.get();

c=cin.get();

cout<<a<<b<<c;


입력으로 

"k

q"

를 입력한다면 출력 또한 같게 나온다. b에는 개행문자인 '\n'이 저장되기 떄문이다.


문자열 전체를 공백, 개행문자를 포함하여 입력받고자 할때는 cin.getline() 함수를 사용한다. 종결 문자를 NULL로 바꾸며 최대 입력 가능 문자수보다 많은 문자를 입력한 경우 n-1 만큼 받아들이고 n번째를 NULL로 바꾼다고 한다. 3번째 인자가 종결문자에 해당하는데, default로 NULL로 설정되어있으며 사용자 정의값으로 바꿀 수 있다. char* 나 char 배열을 입력으로 받는다.


ex)

char str[10];

cin.getline(str, 10, 'i');        // str에 9개의 문자를 입력받아 저장한다. 

입력으로 "asdfisdf"를 입력받는다면, "asdf"까지만 입력된다. 종결문자 'i'를 만났기 때문이다.


string 객체를 이용하여 입력을 받고싶다면 getline()함수를 사용한다.


ex) 

string str;

getline(cin, str);

char[] 배열을 이용하여 입력받고자 할 때


'programming > c++' 카테고리의 다른 글

[c++]문자열 나누기(string tokenizer)  (0) 2017.12.01