본문 바로가기
  • 쓸쓸한 개발자의 공부방
C++

[C++] cout, cin, iomanipulator

by 심찬 2021. 8. 5.

 

c 언어에서 사용하는 기본적인 출력 방법인 printf, scanf 를 사용한다.

#include <stdio.h>

int main()
{
    int age = 0;    
    printf("How old are you ? >> ");
    scanf("%d", &age);
    printf("age : %d\n", age);
}

 

 

아래는 c 언어에서의 printf 와 scanf 를 c++에서 사용하는 방법입니다.

(물론 printf, scanf를 사용할 수는 있지만 추천하지 않는다.)

 

C++ 입출력

std::cout   -    변수 출력 시 서식 문자열 지정이 필요없다.   <<를 연속적으로 여러번 사용이 가능하다.

std::endl  -   \n 을 사용하는 것도 지원하지만 C++에서는 std::endl로 사용한다.

std::cin   -   서식 문자열 필요 없으며 주소 연산자를 사용하지 않는다.

#include <iostream>

int main()
{
    int age = 0;
    std::cout << "How old are you ? >> ";
    std::cin  >> age;
    std::cout << "age : " << age << std::endl; // '\n'
}

 

cout 과 endl 를 사용하는 3가지 방법

 

fully qualified name (권장하는 방법)

#include <iostream>

int main()
{
    std::cout << "hello" << std::endl;
}

 

using declaration (cout, endl만을 사용한다면 이 방법도 좋음)

#include <iostream>
using std::cout;
using std::endl;

int main()
{
    cout << "hello" << endl;
}

 

using directive (가장 쉽지만 충돌이 발생할 수 있음)

#include <iostream>
using namespace std;

int main()
{
    cout << "hello" << endl;
}

 

 


 

 

iomanipulator

입출력 형태를 지정하기 위해 사용, 조정자 함수 또는 조작자 함수라고 표현한다.

<iostream> 또는 <iomanip> 헤더 필요

std::dec 변수값을 10진수로 출력
std::hex 변수값을 16진수로 출력
std::setw(10) 문자열 출력시 개수를 지정 (10개 문자를 출력)
std::setfill('#') 공백을 채울 문자를 지정해줌 (여기서는 #으로 채움)
set::left 왼쪽 정렬 

 

#include <iostream>
#include <iomanip>

int main()
{
    int n = 10;
    std::cout << n << std::endl;  // 10진수
    
    std::cout << std::hex;   // 여기부터는 cout 출력시 16진수를 사용하겠다는 의미
    std::cout << n << std::endl;  // 16진수
    std::cout << std::hex << n << std::endl;  // 16진수
    
    std::cout << std::dec;  // 여기부터는 cout 출력시 10진수를 사용하겠다는 의미
    std::cout << n << std::endl;  // 10진수
    
    std::cout << "hello" << std::endl;    
    
    
    // 10개 문자열을 출력하며, 빈 칸은 #으로 채우고, 왼쪽 정렬!
    std::cout << std::setw(10) << std::setfill('#') 
              << std::left    << "hello" << std::endl;

    // 10개 문자열을 출력하며, 빈 칸은 *로 채우고, 오른쪽 정렬!
    std::cout << std::setw(10) << std::setfill('*') 
              << std::right    << "hello" << std::endl;   
}

 

 

좀 더 자세한 iomanipulator 에 대해 알고 싶으면 아래 cppreference.com 홈페이지에서 정보를 제공하고 있습니다.

 

cppreference.com / iomanipulator 

 

https://en.cppreference.com/w/cpp/io/manip

 

Input/output manipulators - cppreference.com

Manipulators are helper functions that make it possible to control input/output streams using operator<< or operator>>. The manipulators that are invoked without arguments (e.g. std::cout << std::boolalpha; or std::cin >> std::hex;) are implemented as func

en.cppreference.com

 

포스팅에 포함된 dec, hex, oct, setfill, setw, left 등에 대한 정보가 있으며, 이외에도 다양한 함수들을 제공하고 있습니다.

 

 

 

댓글