프로그래밍 언어/C++

키 입력 받기

· 코딩마이데이

예제 소스

ex2-3.cpp

#include <iostream>
using namespace std;

int main() {
	cout << "너비를 입력하세요>>";

	int width;
	cin >> width; // 키보드로부터 정수 값 너비를 읽어 width 변수에 저장

	cout << "높이를 입력하세요>>";

	int height;
	cin >> height; // 키보드로부터 정수 값 높이를 읽어 height 변수에 저장

	int area = width * height;
	cout << "면적은 " << area << '\n'; // 면적을 출력하고 다음 줄로 넘어감
}

 

실행 결과

너비를 입력하세요>>3
높이를 입력하세요>>5
면적은 15

 

cin과 >> 연산자를 이용한 키 입력

C++에서는 표준 입력 스트림인 cin과 >> 연산자를 이용하여 사용자로부터 키를 입력받습니다. cin과 >> 연산자는 <iostream> 헤더 파일에 선언되어 있으므로 프로그램 서두에는 다음 문이 필요합니다.

#include <iostream>
using namespace std;

 

다음의 모든 기본 타입에 대해 >> 연산자로 데이터 입력에 가능합니다.

bool, char, short, int, long, float, double

 

다음은 정수형 변수 width와 문자형 변수 c에 각각 정수와 문자를 입력받는 코드입니다.

int width;
cin >> width; // 키보드로부터 정수 값 너비를 읽어 width 변수에 저장
char c;
cin >> c; // 키보드로부터 문자를 입력받아 c에 저장

 

C++에서는 C언어와 달리 키 입력받는 변수를 다음과 같이 이름 그대로 사용합니다.

int width;
cin >> width; // ( O )
cin >> &width; // ( X ), width의 주소 값을 주어서는 안 됩니다.

 

cin은 여러 개의 >> 연산자를 이용하여 여러 값을 입력받을 수도 있습니다. >> 연산자들은 왼쪽부터 오른쪽으로 순서대로 키보드로부터 입력받습니다. 다음은 한 문장에 두 개의 >> 연산자를 이용하여 width와 height에 값을 읽고 출력하는 코드입니다.

cout << "너비와 높이를 입력하세요>>";
cin >> width >> height;
cout << width << '\n' << height << '\n';

너비와 높이를 입력하세요>>23 26

23

26

 

이제 cin과 >> 연산자에 대해 잠깐 정리하고 넘어갑니다.

 

cin 객체

cin은 키보드와 C++ 응용프로그램을 연결하는 C++ 표준 입력 스트림 객체(standard input stream object)입니다. 키보드로 입력되는 값들은 모두 cin 객체의 스트림 버퍼로 들어오며, 응용프로그램은 cin 객체로부터 입력된 키 값을 읽습니다.

 

>> 연산자

>> 연산자는 스트림 추출 연산자(stream extraction operator)로 불리며 왼쪽 스트림 객채로부터 데이터를 읽어 오른쪽 피연산자에 지정된 변수에 삽입합니다. 스트림 추출 연산자는 본래 정수를 시프트하는 C++의 기본 연산자이지만, <iostream> 해더 파일에 스트림 추출 연산자로 재정의(operator overloading)되어 있습니다.

 

<Enter> 키를 칠 때 변수에 키 값 전달

다음은 키보드에서 사용자의 나이를 입력받아 정수형 변수 age에 저장하는 코드입니다.

>> 연산자가 언제 키를 읽는지 알아봅시다.

int age;
cin >> age;

 

사용자가 입력한 키들은 일차적으로 cin의 스트림 버퍼에 저장되며, <Enter> 키가 입력되면 비로소 >> 연산자가 cin의 입력 버퍼에서 키 값을 끌어내어 변수에 저장합니다.

또한 키 입력 도중 사용자가 <Backspace> 키를 치면, cin의 스트림 버퍼에 입력된 키를 제거할 수 있습니다. <Enter> 키를 입력하여야 비로소 >> 연산자가 작동합니다.

 

실행문 중간에 변수 선언

C언어와 마찬가지로 C++ 에서도 프로그램 어디서나 변수 선언이 가능합니다. 물론, 변수의 범위 규칙에 따라, 변수 사용은 변수가 선언된 라인 아래부터 적용됩니다.

int width;
cin >> width; // 키보드로부터 너비를 읽는다.

cout << "높이를 입력하세요>>";

int height;
cin >> height; // 키보드로부터 높이를 읽는다.

// 너비와 높이를 구성되는 사각형의 면적을 계산합니다.
int area = width * height;
cout << "면적은 " << area << '\n'; // 면적을 출력하고 한 줄 띈다.

 

실행문 중간에 변수를 선언하는 방식은 몇 가지 장점이 있습니다. 첫째, 변수를 사용하는 코드 바로 위에 변수응 선언할 수 있어 코드를 읽기 쉽게 만듭니다.

둘째, 변수를 사용하기 바로 전 라인에 변수를 선언하면, 변수 이름을 잘못 타이핑하는 실수를 줄일 수 있습니다.

int time, timer;
...
timer = 5; // time에 5을 저장하려다 timer로 잘못 입력, 컴파일 오류 발생하지 않음
...
timer = 3;

 

이런 오류의 가능성은 다음 코드와 같이 변수가 필요한 곳 바로 전에 변수를 선언함으로써 줄일 수 있습니다.

int time;
timer = 5; // time에 5을 저장하려다 timer로 잘못 입력, 컴파일 오류 발생하지 않음
...
int timer; // timer 변수가 필요할 때 선언
timer = 3;

 

timer 변수를 사용하기 직전에 선언하면, time이 timer로 잘못 타이핑된 경우 컴파일 오류가 발생하므로, 개발자의 타이핑 오류를 사전에 발견할 수 있습니다.

또 다른 장점의 예로서, 다음 for문은 필요한 곳에 변수(int n)를 선언하여 사용하는 대표적인 경우입니다.

for(int n=0; n<10; n++)
	count << n;

 

실행문 중간에 변수를 선언하면 단점도 있습니다. 선언된 변수들이 코드 사이에 흩어져 있으므로, 선언된 모든 변수를 한 눈에 보기 힘들고, 코드 사이에서 선언된 변수를 찾기가 용이하지 않습니다.

'프로그래밍 언어 > C++' 카테고리의 다른 글

객체 생성과 객체 활용  (0) 2026.05.31
C++ 클래스 만들기  (0) 2026.05.28
키보드로 문자열 입력  (0) 2026.05.25
namespace와 std::  (0) 2026.05.19
프로그램의 기본 요소와 화면 출력  (0) 2026.05.16