Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 표준 입력 스트림(std::cin) 완벽 가이드

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;처럼 작성하면 공백이나 줄바꿈으로 구분된 두 개의 값을 순서대로 읽어옵니다. 또한 기본적으로 앞뒤 공백 문자는 무시되므로, 사용자가 입력 시 공백을 포함해도 정상적으로 값이 파싱됩니다.