cpp

C++ 입출력(I/O)

임베디드 친구 2024. 12. 17. 20:32
반응형

C++ 프로그래밍에서 입출력은 프로그램이 사용자와 데이터를 주고받는 핵심적인 부분입니다. C++에서는 입출력을 처리하기 위해 표준 라이브러리를 제공합니다. 오늘은 C++의 입출력 방법에 대해 살펴보고, 다양한 예제를 통해 이를 활용하는 방법을 알아보겠습니다.

1. C++ 입출력 기본 개념

C++에서 입출력은 <iostream> 헤더 파일을 통해 이루어집니다. 주요 사용되는 객체는 다음과 같습니다:

  • std::cin: 입력을 받는 데 사용됩니다.
  • std::cout: 출력을 하는 데 사용됩니다.
  • std::cerr: 오류 메시지를 출력할 때 사용됩니다.
  • std::clog: 로그 메시지를 출력할 때 사용됩니다.

이 객체들은 모두 C++의 표준 입출력 스트림에 기반을 두고 있습니다.

입출력 예제

#include <iostream>

int main() {
    int number;
    std::cout << "숫자를 입력하세요: ";
    std::cin >> number;
    std::cout << "입력한 숫자는 " << number << "입니다." << std::endl;
    return 0;
}

위 코드는 사용자로부터 숫자를 입력받아 출력하는 기본적인 예제입니다.


2. 출력(std::cout)

std::cout 객체는 콘솔에 데이터를 출력하는 데 사용됩니다. << 연산자를 사용하여 문자열과 변수를 출력할 수 있습니다.

주요 특징

  • 다양한 데이터 타입 출력 가능: 문자열, 숫자, 변수 등을 출력할 수 있습니다.
  • 체인 출력: 여러 출력을 연속으로 연결할 수 있습니다.

예제: 체인 출력

#include <iostream>

int main() {
    std::cout << "안녕하세요, " << "C++ 입출력 예제입니다!" << std::endl;
    int age = 25;
    std::cout << "나이: " << age << "살" << std::endl;
    return 0;
}

출력 결과:

안녕하세요, C++ 입출력 예제입니다!
나이: 25살

3. 입력(std::cin)

std::cin 객체는 사용자로부터 데이터를 입력받는 데 사용됩니다. >> 연산자를 사용하여 데이터를 변수에 저장할 수 있습니다.

주요 특징

  • 공백이나 엔터로 입력을 구분합니다.
  • 입력은 기본적으로 문자열 또는 숫자 타입으로 변환됩니다.

예제: 사용자 입력 받기

#include <iostream>
#include <string>

int main() {
    std::string name;
    std::cout << "이름을 입력하세요: ";
    std::cin >> name;
    std::cout << "안녕하세요, " << name << "님!" << std::endl;
    return 0;
}

출력 결과:

이름을 입력하세요: 홍길동
안녕하세요, 홍길동님!

주의점

std::cin은 공백을 기준으로 입력을 나누기 때문에, 공백이 포함된 문자열을 입력받으려면 std::getline을 사용해야 합니다.

예제: 공백 포함 문자열 입력 받기

#include <iostream>
#include <string>

int main() {
    std::string fullName;
    std::cout << "전체 이름을 입력하세요: ";
    std::getline(std::cin, fullName);
    std::cout << "반갑습니다, " << fullName << "님!" << std::endl;
    return 0;
}

출력 결과:

전체 이름을 입력하세요: 홍 길 동
반갑습니다, 홍 길 동님!

4. 파일 입출력

C++에서는 파일 입출력을 위해 <fstream> 헤더를 사용합니다. 주요 클래스는 다음과 같습니다:

  • std::ifstream: 파일에서 데이터를 읽는 데 사용됩니다.
  • std::ofstream: 파일에 데이터를 쓰는 데 사용됩니다.
  • std::fstream: 파일 읽기와 쓰기를 모두 수행할 수 있습니다.

예제: 파일 쓰기

#include <iostream>
#include <fstream>

int main() {
    std::ofstream outFile("example.txt");
    if (outFile.is_open()) {
        outFile << "이것은 파일 입출력 예제입니다." << std::endl;
        outFile << "C++에서 파일에 데이터를 기록할 수 있습니다." << std::endl;
        outFile.close();
        std::cout << "파일 쓰기가 완료되었습니다." << std::endl;
    } else {
        std::cerr << "파일을 열 수 없습니다." << std::endl;
    }
    return 0;
}

예제: 파일 읽기

#include <iostream>
#include <fstream>
#include <string>

int main() {
    std::ifstream inFile("example.txt");
    if (inFile.is_open()) {
        std::string line;
        while (std::getline(inFile, line)) {
            std::cout << line << std::endl;
        }
        inFile.close();
    } else {
        std::cerr << "파일을 열 수 없습니다." << std::endl;
    }
    return 0;
}

5. 형식화된 입출력

C++에서는 입출력 데이터를 형식화하기 위해 <iomanip> 헤더를 제공합니다.

주요 함수

  • std::setw: 출력 너비 설정
  • std::setprecision: 소수점 자릿수 설정
  • std::fixed: 고정 소수점 형식 설정

예제: 소수점 출력

#include <iostream>
#include <iomanip>

int main() {
    double pi = 3.14159265359;
    std::cout << "기본 출력: " << pi << std::endl;
    std::cout << std::fixed << std::setprecision(2);
    std::cout << "소수점 2자리: " << pi << std::endl;
    return 0;
}

출력 결과:

기본 출력: 3.14159
소수점 2자리: 3.14

결론

C++ 입출력은 프로그램의 핵심적인 부분으로, 사용자와 데이터를 주고받는 데 유용합니다. 본 포스팅에서는 기본적인 콘솔 입출력부터 파일 입출력, 형식화된 입출력까지 다뤄보았습니다. 이를 활용하여 더욱 효율적인 프로그램을 작성해 보세요!

반응형

'cpp' 카테고리의 다른 글

C++ 함수  (0) 2024.12.18
C++ 반복문  (0) 2024.12.18
C++ 조건문 (Conditional Statements)  (0) 2024.12.17
C++ 데이터 타입과 변수  (0) 2024.12.17
C++ 소개와 개발 환경 설정  (0) 2024.12.17