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;
정리
- Hello World 출력해보기
- 네임스페이스
- out 스트림
- << 연산자
- 출력형식 지정 - 조정자(manipulator)