C, C++ 콘솔 출력 간단 비교

  • C언어 콘솔 출력
printf("오늘날짜 : %d \n할 일 : %s", 5, "블로그 포스팅하기");
  • C++ 언어 콘솔 출력
cout << "오늘날짜 : " << date << "\n할 일 : " << todo << endl;

C++에서의 출력은 C언어에서 %d, %s, %x 등과 같은 규격을 없애는 등 C언어의 불편한점을 해소하려고 했다.

stream 개념을 도입하여 흐름을 표현하였다. (<< 연산자 - push operator)

C++언어에서 사용

# include <iostream>
// using namepsace std;

int main()
{
    int month = 8;
    int date = 5;

    std::cout << "오늘은 " << month << "월 " << date << "일 입니다." << std::endl
}
  • 여기서 전처리기 include를 통해 iostream을 가져와야 한다.
  • std:: <- 라고 쓰는 이유는 namespace때문인데, namespace는 이름을 저장하는 공간이라고 보면 된다. 우리가 큰 단위의 개발을 하면서 비슷한 이름들이 생길 가능성이 크기 때문에 서로 다른 모듈들에게서 중복되는 이름이 없도록 구역을 나눈다고 보면 된다. (자바의 package와 비슷) 여기서 std는 namespace이고 std namespace의 자원을 쓸 때 ::로 표현한다.
  • 위에는 주석처리 되어 있지만 using namespace std라고 하면 앞에 std::cout과 같은 표현을 cout으로 할 수 있다. 미리 namespace를 참조한다고 선언하는 것이라고 보면 된다.
  • << 연산자는 push operator로 C언어에서는 비트연산자로 쓰였다. 하지만 C++에서는 연산자 오버로딩이라는게 있어서 이와같이 다른 연산자로 사용할 수 있다.
  • endl은 c의 \n과 같으나 다른점은 endl은 flush를 한다는 점.

Pragma once

우리가 C++개발을 하면서 다른모듈들을 사용하기 위해 include를 자주 할 텐데, 겹치는 모듈들이 생길 수가 있다. 각기 다른 모듈들에서 어떠한 모듈들을 또 include하고 있는지 모르기 때문에 한번씩만 가져오게 할 수 있는 방법이

pragma once

조정자 (manipulator)

cout << showbase

C++에서는 출력을 할 때 조정자(manipulator)라는 것이 생겼는데, 출력을 보조해준다.

  • showpos / noshowpos - 부호표시
  • dec / hex / oct - 진법표현 (10 / 16 / 8 진수)
  • uppercase / nouppercase - 소, 대문자
  • showbase / noshowbase - 숫자 앞에 Ox (16진수)
  • left / internal / right - 정렬 (왼쪽/가운데/오른쪽) 주로 setw()와 많이 쓴다.
  • noshowpoint / showpoint - 소수점을 보여주냐 마냐
  • fixed / scientific - 소수점 표기법 (고정소수점 / 지수표기)
  • boolalpha / noboolalpha - true를 1 / false를 0 으로 표기

그외 #include 안에 있는 조정자도 있다.

  • setw() - 컬럼 영역 설정
  • setfill() - 빈 영역 문자로 채우기
  • setprecision() - 소수점 자리 보정

와 같고 사용법은 다음과 같다.

cout << showbase << hex << 10 << endl;
cout << setw(10) << left << "hello" << endl;

정리

  1. Hello World 출력해보기
  2. 네임스페이스
  3. out 스트림
  4. << 연산자
  5. 출력형식 지정 - 조정자(manipulator)