Programming/Cplusplus
C++ 입력함수 cin을 사용해보자
Programmer.
2015. 7. 24. 16:23
우선 C언어에서의 입력함수 scanf부터 보고 가겠습니다.
1
2
3
4
5
6
7
8
9 |
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void main()
{
int i = 0;
scanf("%d", &i);
printf("입력된 i 값 = %d\n",i);
} |
cs |
음... i 앞에 &도 붙여줘야 입력이 되고.. 불편하지는 않았나요? 이와 같은 기능을 하는 것을 C++으로 작성 해보겠습니다.
1
2
3
4
5
6
7
8
9 |
#include<iostream>
using namespace std;
void main()
{
int i = 0;
cin >> i;
cout << "입력된 i 값 =" << i << endl;
} |
cs |
똑같은 역할을 하는 함수는 다음과 같이 작성할 수 있습니다. 출력함수인 cout 에서는 <<연산자를 사용했던 것과는 반대로 입력함수 cin은 >>연산자를 사용합니다. 두 함수를 직접 비교하면 C언어에서의 scanf보다 C++에서의 cin이 훨씬 좋아 보이는게 보일 겁니다. 입출력 객체에서는 C 표준 라이브러리 보다 많은 장점을 가지고 있습니다.
- 사용 방법이 훨씬 직관 적입니다. 출력시엔 << 연산자로 출력 개체로 보내고 입력 객체는 >>연산자로 입력 받은 값을 변수로 입력 받은 값을 보내는 모양을 띄고 있어서 알아보기도, 사용하기도 쉽습니다. 또한 연산자의 머리부분이 입출력 방향을 명시하므로 모양 따라 사용하면 됩니다.
- 입출력 객체가 데이터 타입을 자동으로 판병하기 때문에 서식을 따로 기억할 필요가 없습니다.(C언어에서 scanf를 사용할때 %d 따위를 붙였던게 서식) 또 서식을 잘못적는 경우도 없기때문에 안전합니다. C언어를 작성하다 보면 printf는 서식과 인수 갯수가 맞지 않아서 다운되는 경우나, scanf에서 &연산자로 주소를 넘기지 않는경우에도 다운이 되는 경우가 있는데, C++의 경우는 자신이 처리 못하는 형식의 경우 컴파일 에러를 발생시키므로 안전합니다.
- 입출력 객체의 <<와 >>연산자는 여러가지 기본 타입에 대해 중복 정의가 되어 있습니다. 하지만 필요한 경우 사용자 정의 타입을 인식하도록 확장이 가능합니다. 이때 사용되는 기술이 연산자 오버로딩이며 이 것을 이용하면 날짜, 시간등 복잡한 정보도 표준 객체로 입출력이 가능합니다. printf와 scanf는 라이브러리 내의 특정 서식만 다룰 수 있는것과 차이가 보입니다.