cout

Jaemyeong Lee·2024년 7월 31일
0

FastCampusC++

목록 보기
8/78

cout 개요

cout은 C++ 표준 라이브러리의 iostream 헤더 파일에 정의된 객체로, 표준 출력(stdout)에 데이터를 출력하는 데 사용됩니다. << 연산자를 사용하여 데이터를 출력할 수 있으며, 다양한 형식 지정자를 통해 출력 형식을 조정할 수 있습니다.

주요 기능 요약

기능설명
<< 연산자데이터를 출력합니다.
cout.put()단일 문자를 출력합니다.
cout.write()지정된 길이의 문자열을 출력합니다.
cout.width()출력 필드의 너비를 설정합니다.
cout.fill()출력 필드의 공백을 채울 문자를 설정합니다.
cout.precision()부동 소수점의 정밀도를 설정합니다.
cout.setf()플래그를 설정하여 출력 형식을 지정합니다.
cout.unsetf()설정된 플래그를 해제합니다.
freopen()표준 출력을 파일로 리디렉션합니다.
setw(), setfill()iomanip 라이브러리의 함수로, 출력 필드 너비와 공백 채우기 문자를 설정합니다.
setprecision(), showpos()iomanip 라이브러리의 함수로, 부동 소수점의 정밀도와 양수 표시를 설정합니다.
hex, oct, dec16진수, 8진수, 10진수로 출력 형식을 변경합니다.

cout 함수 예제 코드

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    {
        // 기본적인 cout 사용법
        cout << 1 << endl;
        cout.operator<<(1).operator<<(endl); // 위와 동일(연산자 오버로딩)

        cout << '1' << endl;
        operator<<(cout, '1').operator<<(endl); // 위와 동일(연산자 오버로딩)
    }

    {
        // 다양한 방법으로 문자 출력
        cout << 'a' << 'b' << endl;
        cout.put('a').put('b').put('\n');
        cout.write("ab\n", 3);
    }

    {
        // 10칸 여백 설정
        cout.width(10);
        cout << 1 << endl;
    }

    {
        // 10칸 여백 설정 및 여백 채우기
        cout.width(10);
        cout.fill('#');
        cout << 1 << endl;
        cout.fill(' '); // 원상 복구
    }

    {
        // 정밀도 설정
        float num = 0.1234567;
        cout << num << endl;           // 기본 정밀도
        cout.precision(2);             // 정밀도 2로 설정
        cout << num << endl;
        cout.precision(64);            // 정밀도 64로 설정
        cout << num << endl;
    }

    {
        // 양수에 + 기호 표시 설정
        cout.setf(ios_base::showpos);
        cout << 1 << endl;
        cout << 2 << endl;
        cout.unsetf(ios_base::showpos); // + 기호 표시 해제
        cout << 1 << endl;
        cout << 2 << endl;
    }

    {
        // bool 값을 true/false로 출력 설정
        cout.setf(ios_base::boolalpha);
        cout << true << endl;
        cout << false << endl;
        cout.unsetf(ios_base::boolalpha); // true/false 출력 해제
        cout << true << endl;
        cout << false << endl;
    }

    {
        // 정렬 설정
        cout.setf(ios_base::internal, ios_base::adjustfield); // 부호와 숫자를 양 끝에 배치
        cout.width(10);
        cout << -10 << 20 << endl;
        cout.setf(ios_base::left, ios_base::adjustfield); // 왼쪽 정렬
        cout.width(10);
        cout << -10 << 20 << endl;
        cout.setf(ios_base::right, ios_base::adjustfield); // 오른쪽 정렬
        cout.width(10);
        cout << -10 << 20 << endl;
    }

    {
        // 8진수, 16진수, 10진수 출력
        cout.setf(ios_base::oct, ios_base::basefield);
        cout << 16 << endl;
        cout.setf(ios_base::hex, ios_base::basefield);
        cout << 16 << endl;
        cout.setf(ios_base::dec, ios_base::basefield);
        cout << 16 << endl;
    }

    {
        // 다른 방식으로 16진수, 8진수, 10진수 출력
        cout << hex << 16 << endl;
        cout << oct << 8 << endl;
        cout << dec << 10 << endl;

        hex(cout);
        cout << 16 << endl;
        oct(cout);
        cout << 8 << endl;
        dec(cout);
        cout << 10 << endl;
    }

    {
        // 조합된 조작자 사용
        cout << setw(10) << setfill('#') << setprecision(2) << showpos << 1.1f << endl;
    }

    {
        // 표준 출력을 파일로 리디렉션
        freopen("output.txt", "w", stdout);
        cout << "Hello World" << endl;
    }
}

주요 개념 설명

  1. 기본적인 cout 사용법:

    cout << 1 << endl;
    cout.operator<<(1).operator<<(endl); // 동일한 출력
    cout << '1' << endl;
    operator<<(cout, '1').operator<<(endl); // 동일한 출력
    • << 연산자와 operator<<를 사용하여 출력을 할 수 있습니다.
  2. 다양한 방법으로 문자 출력:

    cout << 'a' << 'b' << endl;
    cout.put('a').put('b').put('\n');
    cout.write("ab\n", 3);
    • putwrite 함수를 사용하여 문자를 출력할 수 있습니다.
  3. 10칸 여백 설정:

    cout.width(10);
    cout << 1 << endl;
    • width 함수를 사용하여 출력 필드의 너비를 설정합니다.
  4. 여백 채우기 설정:

    cout.width(10);
    cout.fill('#');
    cout << 1 << endl;
    cout.fill(' ');
    • fill 함수를 사용하여 출력 필드의 공백을 특정 문자로 채울 수 있습니다.
  5. 정밀도 설정:

    float num = 0.1234567;
    cout.precision(2);
    cout << num << endl;
    cout.precision(64);
    cout << num << endl;
    • precision 함수를 사용하여 부동 소수점의 정밀도를 설정합니다.
  6. 양수에 + 기호 표시 설정:

    cout.setf(ios_base::showpos);
    cout << 1 << endl;
    cout.unsetf(ios_base::showpos);
    cout << 1 << endl;
    • setfunsetf 함수를 사용하여 플래그를 설정 및 해제할 수 있습니다.
  7. bool 값을 true/false로 출력 설정:

    cout.setf(ios_base::boolalpha);
    cout << true << endl;
    cout.unsetf(ios_base::boolalpha);
    cout << true << endl;
    • setfunsetf 함수를 사용하여 bool 값을 true/false 또는 1/0으로 출력할 수 있습니다.
  8. 정렬 설정:

    cout.setf(ios_base::internal, ios_base::adjustfield);
    cout.width(10);
    cout << -10 << 20 << endl;
    cout.setf(ios_base::left, ios_base::adjustfield);
    cout.width(10);
    cout << -10 << 20 << endl;
    cout.setf(ios_base::right, ios_base::adjustfield);
    cout.width(10);
    cout << -10 << 20 << endl;
    • setf 함수를 사용하여 정렬 방식을 설정할 수 있습니다.
  9. 8진수, 16진수, 10진수 출력 설정:

    cout.setf(ios_base::oct, ios_base::basefield);
    cout << 16 << endl;
    cout.setf(ios_base
    
    		::hex, ios_base::basefield);
    cout << 16 << endl;
    cout.setf(ios_base::dec, ios_base::basefield);
    cout << 16 << endl;
    • setf 함수를 사용하여 숫자의 기수(8진수, 16진수, 10진수)를 설정할 수 있습니다.
  10. 다른 방식으로 8진수, 16진수, 10진수 출력 설정:

    cout << hex << 16 << endl;
    cout << oct << 8 << endl;
    cout << dec << 10 << endl;
    hex(cout);
    cout << 16 << endl;
    oct(cout);
    cout << 8 << endl;
    dec(cout);
    cout << 10 << endl;
    • hex, oct, dec 조작자를 사용하여 출력 형식을 변경할 수 있습니다.
  11. 조합된 조작자 사용:

    cout << setw(10) << setfill('#') << setprecision(2) << showpos << 1.1f << endl;
    • setw, setfill, setprecision, showpos 조작자를 조합하여 출력 형식을 설정할 수 있습니다.
  12. 표준 출력을 파일로 리디렉션:

    freopen("output.txt", "w", stdout);
    cout << "Hello World" << endl;
    • freopen을 사용하여 표준 출력을 파일로 리디렉션할 수 있습니다.
profile
李家네_공부방

0개의 댓글