관리 메뉴

Kim's Programming

C++ 입력함수 cin을 사용해보자 본문

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 표준 라이브러리 보다 많은 장점을 가지고 있습니다.

 

  1. 사용 방법이 훨씬 직관 적입니다. 출력시엔 << 연산자로 출력 개체로 보내고 입력 객체는 >>연산자로 입력 받은 값을 변수로 입력 받은 값을 보내는 모양을 띄고 있어서 알아보기도, 사용하기도 쉽습니다. 또한 연산자의 머리부분이 입출력 방향을 명시하므로 모양 따라 사용하면 됩니다.
  2. 입출력 객체가 데이터 타입을 자동으로 판병하기 때문에 서식을 따로 기억할 필요가 없습니다.(C언어에서 scanf를 사용할때 %d 따위를 붙였던게 서식) 또 서식을 잘못적는 경우도 없기때문에 안전합니다. C언어를 작성하다 보면 printf는 서식과 인수 갯수가 맞지 않아서 다운되는 경우나, scanf에서 &연산자로 주소를 넘기지 않는경우에도 다운이 되는 경우가 있는데, C++의 경우는 자신이 처리 못하는 형식의 경우 컴파일 에러를 발생시키므로 안전합니다.
  3. 입출력 객체의 <<와 >>연산자는 여러가지 기본 타입에 대해 중복 정의가 되어 있습니다. 하지만 필요한 경우 사용자 정의 타입을 인식하도록 확장이 가능합니다. 이때 사용되는 기술이 연산자 오버로딩이며 이 것을 이용하면 날짜, 시간등 복잡한 정보도 표준 객체로 입출력이 가능합니다. printf와 scanf는 라이브러리 내의 특정 서식만 다룰 수 있는것과 차이가 보입니다.

 

'Programming > Cplusplus' 카테고리의 다른 글

C++ - 클래스(Class)(2/2)  (0) 2015.08.28
C++ - 클래스(Class)(1/2)  (0) 2015.08.28
C++ - 구조체의 확장  (0) 2015.08.27
C++ 에서의 동적 할당 new/delete  (0) 2015.08.27
C++에서의 Hello World!를 구현해보자!  (0) 2015.07.24