본문 바로가기
컴퓨터/C++

[C++] 표준 입력 함수 cin, cin.get(), cin.getline()

by Luyin 2013. 8. 21.

1. cin

=> <iostream> 에 존재

=> 표준 입력 버퍼에서 개행 문자를 제외한 값을 가져옴

=> 공백, 개행 무시

=> 개행 키보드 버퍼에 남겨둠


=> space 단위로 끊어서 입력 받을 수 있다


cin은 문자와 문자열 모두 입력받을 수 있습니다.

예를들면요,

#include <iostream.h>

void main()

{

char a; //문자변수 선언

cin>>a; //문자입력 받음

cout<<a; //입력했던 문자 출력

}

 


또 다른 예는요,

#include <iostream.h>
void main()
{
char a,b;
cin>>a;

cin>>b;
cout<<a<<" "<<b;
}

이 예의 결과는요,

t입력 후 엔터

y입력 후 엔터

결과=> t y 출력

변수 a에는 t, 변수 b에는 y가 입력되기 때문입니다.



또 다른 예는요,

#include <iostream.h>

void main()

{

char a[10]; //char형 배열 선언

cin>>a; //문자열 입력 받음

cout<<a; //입력했던 문자열 출력

}

이 예의 결과는요,

this is 입력 후 엔터

결과=> this



1. cin.get()

=> <iostream> 에 존재

=> 표준 입력 버퍼에서 문자를 하나만 가져옴

=> 공백, 개행 포함

=> 문자만 입력 받음


=> space 단위로 끊어서 입력 받을 수 있다


get()은 문자만 입력받을 수 있습니다.

예를들면,

#include <iostream.h>

void main()

{

char a;

a=cin.get(); //a에 입력한 문자 저장

cout<<a;

}



#include <iostream.h>

void main()

{

char a,b;

a=cin.get();
b=cin.get();

c=cin.get();

cout<<a<<" "<<b << " " << c;

}

이 예의 결과는요,

t입력 후 엔터, k입력후 엔터

<결과>

t


k

 

 

즉 t +Enter(new line:개행) + k입니다.

이것이 cin과의 차이점입니다.

 

앞에서 cin은 엔터가 나오면 입력종료로 간주했지만, get은 엔터도 입력받을 문자로 간주합니다.

 

따라서 변수a에는 t가, 변수b에는 엔터가 c에는 k가 입력됩니다.

 

또는

cin.get(a);
cin.get(b);
cin.get(c);

로 하였을 경우 다음과 같이 입력 하면

Q R

a에는 Q가, b에는 빈칸이, c에는 R이 저장됩니다.


1. cin.getline(변수의 주소, 최대 입력가능 문자수, 종결 문자)

=> <iostream> 에 존재

=> 종결 문자를 NULL로 바꿈, 종결 문자 생략시 엔터로 간주


=> 최대 입력 가능 문자수보다 많은 문자를 입려간 경우 n-1개 만큼 받아들이고 n번째 문자는 NULL로 바꾼다.

=> 공백, 개행 입력 받음

=> 문자열만 입력받음


=> cin.getline() 과 getline()는 다른 함수이다.


#include <iostream.h>

void main()

{

char a[10];
cin.getline(a,10);
cout<<a;

}

이 예의 결과는요,

this is 입력 후 엔터

결과=>this is

이것은 위의 cin의 결과와 차이점 입니다. cin은 공백을 만나면 입력이 끝난 줄 알지만 getline은 공백(아스키코드 32)도 문자로서 받아들입니다.



또 다른 예는요,

#include <iostream.h>

void main()

{

char a[10];

cin.getline(a,10,'i');

cout<<a;

}