본문 바로가기

프로그래밍/C ++

[C++] iosteam 표준 입출력

## C++ 표준 입출력

 c++에서의 표준 함수들은 함수 앞에 std:: 를 붙여주어야 사용할 수 있다.

  C C++
출력 printf 함수 std::cout 객체
변수값 출력 %d, %f 필요 format 지시어 필요 없음
특징   <<를 연속적으로 사용 가능
개행  \n \n 또는 std::endl
입력 scanf 함수
- 주소를 전달 (&n)
std::cin 객체
- 주소가 아닌 n으로 전달
헤더파일 <cstdio> <iostream>
  • std::cout 객체
    • C++ 초창기부터 사용되던 표준 출력 객체
    • 단점 1: 여러 개 변수 출력시 코드 복잡
    • 단점 2: 성능이 느리다 (printf 사용..)
#include <cstdio> //stdio.h
#include <iostream>

int main(){
    int n = 10;
    double d = 3.4;

    printf("%d, %f \n", n, d); //c언어

    std::cout << n << ", " << d << std::endl; //c++

    scanf("%d", &n); //c언어
    std::cin >> n; // c++
}

/*
soyoun> ./a.out                                                                                                                           # ~/c++_code/basic
10, 3.400000 
10, 3.4
10
5
*/

 

## io manipulator

→ 입출력시의 다양한 출력(입력) 형태를 지정하는 것

→ 조정자(조작자) 함수

→ <iostream>, <iomanip> 등의 헤더

  • std::dec 변수값을 10진수로 출력
  • std::hex 변수값을 16진수로 출력
  • std::setw 문자열 출력시 개수 지정
  • std::setfill 공백 채울 문자 지정
  • std::left 왼쪽 정렬(align)
//코드 상단에 using namespace std; 를 적어주면 매번 std:: 를 함수 앞에 적어주지 않아도 된다.
#include <iostream> //cout 함수
using namespace std;
#include <iostream>
#include <iomanip>

int main()
{
	int n = 10;

	std::cout << n << std::endl;

	// "%x" 16진수
	std::cout << std::hex << n << std::endl;

	// "%d" 10진수
	std::cout << std::dec << n << std::endl;

	// "%10d"
	std::cout << std::setw(10) << n << std::endl;
    //10자리에 맞춰 출력할 건데 공백은 #으로 채울 때
	std::cout << std::setw(10) << std::setfill('#') << n << std::endl;
    
    //왼쪽 정렬 (오른쪽에 공백 채우기)
	std::cout << std::setw(10) << std::setfill('#') << std::left << n << std::endl;
    std::cout << std::setw(10) << std::setfill('#') << std::right << n << std::endl;
}

/*
soyoun> ./a.out                                                                                                                           # ~/c++_code/basic
10
a
10
        10
########10
10########
########10
*/

 

  • C++에서 줄바꿈 출력하기 위해서는 cout << endl; 이용
#include <iostream>
using namespace std;

int main() {
    cout << "Hello World";
    cout << endl;
    cout << "C++ is fun";
    return 0;
}
  • cout을 이용해서 숫자 출력도 가능하다.
  • cout << fixed 는 소수점 자리 표현을 고정하겠다는 뜻이고, cout.precision(n) 은소수점 n째자리까지 표현하겠다
#include <iostream>
using namespace std;

int main() {
    cout << fixed; //소숫점 자리 표현 고정

    double a = 33.567268;

    cout.precision(4);
    cout << a << endl;

    cout.precision(2);
	cout << a << endl;

    return 0;
}

 

## std::print

✔ C++ 23에서 추가되는 새로운 출력 함수

#include <iostream>
#include <print>

int main(){
    int n = 10;
    double d = 3.4;

    std::cout << "n = " << n << ", d =" << d << std::endl;

    std::println("n = {}, d = {}", n. d);

    std::println("{0}, {1}, {0}", n, d);

    std::print("hello "); //개행 안됨
    std::println("world"); //개행
}

 

 

cin 입력함수

cin 역시 cout 과 동일하게, 코드 상단에 cin 함수가 들어있는 iostream 헤더를 포함시켜주어야 한다.
cin 을 통해 입력을 받으면 줄을 바꿔주는 \n 역시 공백과 마찬가지로 입력에서 무시된다.

 

#include <iostream>
using namespace std;

int main() {
    //변수 선언
    int a;

    //입력
    cin >> a;

    cout << a + 2;
    return 0;
}
반응형

'프로그래밍 > C ++' 카테고리의 다른 글

[C++] 함수  (0) 2024.12.03
[C++] 자료형 (묵시적형변환)  (0) 2024.12.03
[c++] C++ 변수의 특징  (0) 2024.07.08
[c++] std namespace / header file  (0) 2024.07.04
[C++] namespace  (0) 2024.06.24