1. cin
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
2. get()
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();
b=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이 저장됩니다.
3. cin.getline()
getline()은 문자열만 입력받습니다.
getline(변수의 주소,최대입력가능 문자수,종결문자);
이렇게 사용하고요, 종결문자 생략시는 엔터로 간주됩니다.
그리고 종결문자를 Null문자로 바꿉니다. 따라서 종결문자전까지 출력을 하게 됩니다.
게다가 최대입력가능 문자수보다 많은 문자를 입력한 경우 n-1개만큼만 받아들이고 n번째 문자는
null문자로 합니다.
예를들면,
#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;
}
이 예의 출력결과는,
this 입력 후 엔터
결과=> th 출력
게다가 getline은 두가지 형태가 있습니다.
하나는 cin.getline()형태와 getline()의 형태가 그것인데,
cin.getlin같은 경우는 앞에서 설명을 했고, 주목을 해야 할 것이 getline()입니다.
우선 getline의 기본 형태는 getline(cin,저장할주소)입니다.
여기서 주의해야 할 것은 getline()은 저장할주소가 반드시 string형 변수(char배열이 아닙니다.)
이어야 한다는 겁니다.
이상하게도 getline()같은 경우에는 엔터를 두번 쳐 주어야만 하는 이상한 양향을 띄는데,
이에 대해서 알고 있는 사람은 정확하게 없는 것 같습니다.
조사를 해 본 결과 보통은 개행문자(enter)를 만나면 그걸 null문자롤 만들기 때문에 한번 더
쳐 주어야 한다고 하더군요. 물론 정확하진 않습니다. 조사가 되는 대로 올리도록 하죠.
getline()을 사용하는 경우 입력하는 cmd창이 무척이나 지저분해집니다.
보통은 cin.getline()을 사용하는게 좋을 것 같습니다.