[C++] :: cin, cout

‎김미리·2025년 3월 22일

C++

목록 보기
1/2

1. cin이란?

  • 사용자로부터 데이터를 입력받을 때 사용한다.
  • 스트림 방식으로 데이터를 가져오며, 입력받은 데이터를 특정 변수에 저장한다.
#include <iostream>
using namespace std;

int main() {
    int age;
    cout << "Enter your age: ";
    cin >> age; // 사용자로부터 입력받아 변수 age에 저장
    cout << "Your age is " << age << endl;
    return 0;
}



1-1. cin의 특징

  • 연속적으로 여러 데이터를 입력 받을 수 있다
	int a, b;
	cin >> a >> b; // 두 변수에 각각 값 입력
  • 숫자, 문자 등의 입력은 공백 또는 개행 문자로 구분된다.




2. cout란?

  • 데이터를 화면에 출력할 때 사용한다.
  • 스트림 방식으로 데이터를 화면에 전달한다.
#include <iostream>
using namespace std;

int main() {
    cout << "Hello, World!" << endl; // 텍스트 출력
    return 0;
}



2-1. cout의 특징

  • 여러 데이터를 출력할 수 있다.
	cout << "Age: " << 25 << ", Height: " << 170.5 << endl;
  • endl은 개행을 포함하며 출력 버퍼를 비운다.
    count << "Hello" << endl;cout << "Hello\n";과 비슷하지만 버퍼 관리에서 차이가 있다.




3. cin과 cout의 작동원리

  • 스트림(stream)으로 동작하며 입출력 장치와 데이터를 주고받는다.
  • 버퍼링을 통해 입출력 속도를 조정한다.





3-1. 스트림 방식

  • 입력 스트림 버퍼
    : 키보드 입력을 먼저 저장한 뒤, 프로그램이 데이터를 요청하면 이를 전달한다.


  • 출력 스트림 버퍼
    : 출력 데이터를 모아두었다가 특정 조건(endl, flush)이 충족되면 한 번에 출력한다.





4. 주의 사항

  • cin과 cout의 성능:
    기본적으로 동기화된 상태에서 작동하며, C의 scanfpritnf보다 느릴 수 있다. 따라서 아래 코드처럼 동기화를 비활성화하는 경우가 많다.
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
  • 에러 처리:
    입력값이 잘못되면 버퍼가 비워지지 않아 문제가 생길 수 있다. 이를 해결하려면 아래 코드처럼 버퍼를 정리해야 한다.
	cin.clear();  // 에러 플래그 초기화
	cin.ignore(INT_MAX, '\n');  // 남아 있는 버퍼 비우기

0개의 댓글