Console IO란 ?
Console IO는 프로그램이 콘솔 창(터미널, 명령 프롬프트) 을 통해 사용자와 데이터를 주고받는 것을 말한다.
- Input(입력) : 사용자에게 값을 입력받음
- Output(출력) : 사용자에게 입력받은 값을 화면에 보여줌
C++에서는 이와 같이 사용한다.
- std::cout → 출력
- << → 출력 연산자
- std::cin → 입력
- >> → 입력 연산자
- std::endl → 줄바꿈
iostream
Console IO를 사용하기 위해선 헤더를 포람해야 된다.
#include <iostream>
이 헤더를 사용함으로 cout, cin , endl 즉 콘솔 입출력 기능에 포함된 키워드를 사용할 수 있다.
cout
cout은 console output 의 줄임말로 콘솔에 데이터를 출력하는 객체이다.
<< 연산자
<< 이 연산자는 삽입 연산자 (insertion operator)라고 하며 오른쪽 데이터를 왼쪽 스트림으로 보낸다 라는 뜻한다.
예시
#include <iostream>
int main(void)
{
std::cout << "Hello World";
}
출력

endl
줄바꿈 기능이 있고 버퍼를 강제로 비우는 기능이 있다.
\n
줄바꿈 기능만 수행하며 버퍼는 시스템 판단하에 자동으로 비워진다.
예시
int main(void)
{
std::cout << "이름 : " << "Taskino Ren" << std::endl;
std::cout << "나이 : " << "Secret\n";
std::cout << "끝";
}
출력

endl; 주의점
버퍼를 비우는 작업은 시스템 자원 소모가 많다고 하기에 endl를 남발하게 되면 프로그램의 속도가 현저히 느려져서 성능 저하가 될수 있다.
cin
cin은 console input의 줄임말로 사용자에게 값을 입력받을 때 사용한다.
>> 연산자
입력에서 사용하는 연산자로 추출 연산자 (extraction operator) 라고 하며 입력 스트림에서 데이터를 꺼내 변수에 저장한다.
예시
int main(void)
{
std::string name;
std::cin >> name;
std::cout << "이름 : " << name << "\n";
std::cout << "끝";
}
출력

추가
std::string name; 같이 문자열을 받는 것을 사용할 때 는 이 헤더를 포함해야된다.
#include <string>
getline
cin >> 은 공백 전까지만 입력받는다. 이때 사용하는게 getline 이다.
예시
int main(void)
{
std::string name;
std::getline(std::cin, name);
std::cout << "이름 : " << name << "\n";
std::cout << "끝";
}
출력

cin + getline 문제점
예시
int main(void)
{
int age;
std::string name;
std::cin >> age;
std::getline(std::cin, name);
std::cout << "이름 : " << name << "\n";
std::cout << "나이 : " << age << "\n";
std::cout << "끝";
}
출력

이렇게 하게되면 name 이 빈 문자열이 되게 된다.
cin >> age 입력후 버퍼에는 18\n 이 저장되고 cin 은 순자만 가져가고 \n이 getline 에서 읽어버리기에 발생하는 문제다.
clear(), ignore(), fail()
cin + getline 의 문제를 해결할 구원 투수들이다.
fail()
입력이 실패했는지 확인하는 함수로 cin이 정상적으로 값을 읽었는지 검사한다.
예시
int main(void)
{
int age;
std::cin >> age;
if (std::cin.fail())
{
std::cout << "입력을 실패하였습니다.\n";
}
else
{
std::cout << "나이 : " << age << "\n";
}
}
출력


clear()
입력 스트림의 오류 상태를 제거하는 함수로 입력이 실패하면 cin은 fail state가 된다. 이 상태에서는 더 이상 입력을 받을 수 없기에
clear() 로 초기화를 해야한다.
예시
int main(void)
{
int age;
std::cin >> age;
std::cin.clear();
if (std::cin.fail())
{
std::cout << "입력을 실패했습니다." << "\n";
}
else
{
std::cout << "나이 : " << age << "\n";
}
}
출력

ignore()
입력 버퍼에 남아있는 데이터를 버리는 함수로 사용자가 입력한 값이 버퍼에 남아 있을 수 있는데
남아 있는 값으로 다음 입력이 생략되고 진행되던게 그 데이터를 지워버려서 다음 입력이 가능하게끔 해주는 장치이다.
예시
int main(void)
{
int age;
int num;
std::cin >> age;
std::cin.clear();
std::cin.ignore(LLONG_MAX, '\n');
std::cin >> num;
std::cout << "나이 : " << age << "\n";
std::cout << "좋아하는 숫자 : " << num << "\n";
}
출력

버퍼 (Buffer)
입력과 출력은 버퍼 라는 임시 저장 공간을 사용한다. 비유하자면 잠시 휴게소에 들렀다가 다시 출발하는 것처럼
데이터도 버퍼라는 공간에 잠시 저장된 후 프로그램으로 전달된다.
버퍼가 필요한 이유
- 디스크 / 네트워크는 상대적으로 느림, CPU는 매우 빠름 그래서 데이터를 버퍼에 잠시 모아서 처리하기 위함
- 데이터를 하나씩 보내면 비효율적이기 때문에 버퍼에 모았다가 한번에 효율적인 데이터 처리를 하기 위함
마무리
2026.03.16 내용을 전반적으로 복습하면서 추가하고 갈아엎으며 작성하다보니 내가 알고있던 것보다 더 많은 내용이 담겨있음을 배웟고 여태 쓰라니까 썻지~ 라는 상태엿으면 아 이래서 써야됫구나 라는 상태까지 오게 되었다.
'학습일지 > C와 C++' 카테고리의 다른 글
| C/C++ 전직 (0) | 2026.03.10 |
|---|---|
| C/C++ Class (0) | 2026.03.09 |
| C/C++ 지금까지 배운 C 문법 활용해보기! (0) | 2026.03.06 |
| C/C++ 상태창 구현<과제> (0) | 2026.03.06 |
| C/C++ 함수 (0) | 2026.03.05 |