책의 1장 c++의 기본문법에 나와있는 내용 중에 가장 기초적인 표준입출력에 대해서만 알아보겠습니다.

 

우선 coutcin<iostream> 헤더파일에서 제공됩니다. 그리고 다음 장에서 배울 std(표준네임스페이스) 네임스페이스 안에 속해있습니다.

 

따라서 cout과 cin을 사용할 때 범위확인연산자 더블콜론(::)을 사용해주어야합니다.

 

예시) std::cout << "Hello World" << std::endl;

예시) std::cin >> number;

 

 

 

std::cout

cout은 c언어에서 printf와는 다르게 '<<'연산자를 사용한다. c언어에서 '<<'는 비트연산자였겠지만, cout에서는 '<<'연산자를 통해 값을 출력합니다.

 

예를 들면

#include <iostream>

int main() {
    std::cout << "Hello World!";
    return 0;
}

이런 식으로 값을 출력하게 된다.

c언어 보다는 꽤나 직관적으로 코딩할 수 있습니다.

 

 

std::cout.precision(n)

이 함수는 cout에 속해있는 함수로 출력할 때 실수의 자릿수를 결정해주는 함수이다. n은 몇자리 까지 출력할 것인지 정해줍니다.

 

예를 들면

#include <iostream>

int main() {
    double num = 85.0 / 7.0;
    
    std::cout << num << " ";
    
    std::cout.precision(3);
    std::cout << num << " ";
    
    return 0;
}

 

위 예시의 출력 값은

12.1429 12.1

출력 자릿수를 3으로 설정했기때문에, "12.1"으로 소수점 포함하여 세자리만 출력된다.

 

 

std::fixed

이 함수는 소수점 이하의 자리수를 고정시켜주는 함수이다. 그 이전에는 소수점 포함 전부의 자리수를 고정했다면, 이 함수 사용시 소수점 이하의 자리수만 고정시켜줍니다. 그리고 이 함수를 사용할 땐 cout의 '<<'연산자와 함께 사용해주어야 합니다.

 

예를 들면

#include <iostream>

int main() {
    double num = 85.0 / 7.0;

    std::cout << num << " ";   //일반 출력

    std::cout.precision(3);
    std::cout << num << " ";   //세자리 출력

    std::cout << std::fixed;
    std::cout << num << " ";   //소수점 이하 세자리 출력

    return 0;
}

 

위 예시의 출력 값은

12.1429 12.1 12.143

이렇게 std::cout.precision과 함께 사용하면 이해하기 훨씬 수월합니다. std::cout.precision을 이용하여 소수점 이하 세자리만 출력해보았습니다.

 

 

std::dec / std::hex / std::oct

위 함수들은 8, 10, 16진수로 출력할 때 사용됩니다. std::fixed와 마찬가지로 cout의 '<<'연산자와 함께 사용해주어야 한다.

 

예를 들면

#include <iostream>

int main() {
    std::cout << std::dec << 27 << std::endl;
    std::cout << std::oct << 27 << std::endl;
    std::cout << std::hex << 27 << std::endl;
    return 0;
}

 

위 예시의 출력 값은

27
33
1b

27은 10진수 그대로 표현한 것이고, 33은 8진수로, 1b는 16진수로 표현한 것입니다.

 

 

std::setw(n)

이 함수는 출력 폭을 정해주는 함수이다. n만큼 폭을 지정해 출력해줍니다. 이 함수는 사용하려면 헤더파일을 하나 더 선언해주어야 합니다. <iomanip> 헤더파일에서 제공한다. 또한 std::setfill()과 함께 사용하면 더욱 다양하게 사용할 수 있습니다. std::fixed와 마찬가지로 cout의 '<<'연산자와 함께 사용해주어야 합니다.

 

예를 들면

#include <iostream>
#include <iomanip>

int main() {
    std::cout << 76 << std::endl;
    std::cout << std::setw(7) << 76 << std::endl;
    std::cout << std::setfill('0') << std::setw(7) << 76 << std::endl;
    return 0;
}

 

위 예시의 출력 값은

76
       76
000000076

위 예시 처럼 std::setw(n)은 std::setfill()과 함께 사용하지 않으면 기본값으로 빈 공백으로 채워집니다

set::setfill()은 인자로 문자를 넣어주면 됩니다. 위의 예시는 '0'을 넣어주어 공백을 0으로 채워서 출력이 되었습니다.

 

 

std::endl

c++에서는 줄을 바꿔주는 함수가 있다. 바로 std::endl이다. 일반적으로 아스키코드인 '\n'을 사용해도 되지만, 일반적인 예제를 풀 때에는 가독성을 위해 endl을 사용해줄 수 도 있습니다.

 

예를 들면

#include <iostream>

int main() {
    std::cout << "Hello World!\n";
    std::cout << "Hello World!" << std::endl;
    std::cout << "End.";
    return 0;
}

 

위 예시의 출력 값은

Hello World!
Hello World!
End.

이렇게 '\n'과 동일하게 출력되는것을 볼 수 있다.

 

 

 

 

std::cin

cin은 cout과 반대로 '>>'연산자를 사용합니다. 함수에다 값을 대입한다고 생각하면 좋을것 같습니다. 표준 입력 방식으로 데이터 입력시 공백을 허용하지 않습니다. 예로 입력값이 23 45 이렇게 사이에 공백을 두게 되면 공백을 포함한 값이 입력되지 않는다. '23' '45' 나누어서 입력이됩니다.

 

예를 들면

#include <iostream>

int main() {
    int n;
    std::cin >> n;
    return 0;
}

 

콘솔에 값을 입력하면 값은 변수 n에 저장된다. 23 45로 공백을 두고 입력하면, n에는 23만 저장된다.

 

 

 

 

마무리

1장에서는 c++의 표준 입출력 cout과 cin에 대해서 배워보았습니다. 다음 2장에서는 함수 앞에 붙어있던 std::가 무엇인지에 대해 배워보겠습니다.

'코딩공부 > C&C++' 카테고리의 다른 글

[C++] #02장 Namespace 네임스페이스  (0) 2020.01.08
Mac에서 VSCode C/C++ 세팅  (3) 2019.12.06