std::cin은 istream 클래스의 객체로, char 타입의 좁은 문자(narrow character)를 처리하는 표준 입력 스트림을 나타냅니다. C 언어의 stdin 스트림에 해당하며, 표준 입력 스트림은 실행 환경에 따라 결정되는 문자 입력원입니다. 일반적으로 키보드나 파일처럼 외부 소스로부터의 입력으로 간주됩니다.
std::cin의 특징
istream 클래스의 객체인 std::cin은 두 가지 방식으로 문자를 읽어올 수 있습니다.
- 형식화된 입력(Formatted Input): 추출 연산자(operator>>)를 사용하여 데이터를 원하는 자료형으로 변환하며 읽습니다.
- 비형식화된 입력(Unformatted Input): read()와 같은 멤버 함수를 사용하여 원시(raw) 데이터를 그대로 읽습니다.
std::cin 객체는 <iostream> 헤더에 외부 링크(external linkage)와 정적 저장 기간(static duration)으로 선언되어 있습니다. 즉, 프로그램이 시작될 때 생성되어 종료될 때까지 존재하며, 프로그램 전체에서 자유롭게 사용할 수 있습니다.
기본 사용 예제
std::cin을 사용하면 표준 입력으로부터 값을 읽어 변수에 저장할 수 있습니다. 예를 들어, int 값을 변수 my_int에 입력받은 후 화면에 출력하는 프로그램은 다음과 같이 작성합니다.
#include<iostream>
int main() {
int my_int;
std::cin >> my_int; // 표준 입력으로부터 정수 읽기
std::cout << my_int; // 읽은 값 출력
return 0;
}
컴파일 및 실행 방법
위 코드를 hello.cpp 파일로 저장합니다. 그다음 터미널(cmd)에서 파일이 저장된 위치로 이동한 뒤, g++ 컴파일러로 다음과 같이 컴파일합니다.
$ g++ hello.cpp
컴파일이 완료되면 다음 명령으로 프로그램을 실행합니다.
$ ./a.out
실행 결과
프로그램 실행 중 입력으로 15를 입력하면 다음과 같은 출력 결과를 얻습니다.
15
추가로 알아두면 좋은 점
추출 연산자(>>)는 여러 개를 연결(chaining)하여 한 번에 여러 변수를 입력받을 수도 있습니다. 예를 들어 std::cin >> a >> b;처럼 작성하면 공백이나 줄바꿈으로 구분된 두 개의 값을 순서대로 읽어옵니다. 또한 기본적으로 앞뒤 공백 문자는 무시되므로, 사용자가 입력 시 공백을 포함해도 정상적으로 값이 파싱됩니다.