C++ 입문 4일차 - 파일 입출력

하는·어제
0

C++ 입문 챌린지

목록 보기
4/5

파일 입출력 기본

프로그램이 외부 파일에서 데이터를 읽고, 파일에 데이터를 쓰는 데에 사용된다.

  • <fstream> 헤더를 사용

기본 파일 입출력:

  • ifstream: 파일에서 데이터를 읽을 때 사용.
  • ofstream: 파일에 데이터를 쓸 때 사용.
  • fstream: 파일에서 읽고 쓰는 기능을 모두 사용할 때 사용.

파일에 데이터 쓰기 (ofstream)

#include <iostream>
#include <string>
#include <fstream>  // 파일 입출력을 위한 헤더 파일

int main() {
    std::ofstream outFile("example.txt");  // 파일을 열거나 생성

    if (outFile.is_open()) {  // 파일이 정상적으로 열렸는지 확인
        outFile << "Hello, World!" << std::endl;  // 파일에 데이터 쓰기
        outFile << "This is C++ file handling." << std::endl;
        outFile.close();  // 파일을 닫음
    } else {
        std::cout << "Unable to open file for writing" << std::endl;
    }

    return 0;
}
  • outFile("example.txt"): 파일이 없으면 생성되고, 파일이 있으면 덮어쓰기가 .
  • outFile << ...: 파일에 데이터를 기록하는 방식은 std::cout과 유사하게 작동해.
  • outFile.close(): 파일을 열었으면, 작업이 끝난 후 반드시 닫아줘야 해.

파일에서 데이터 읽기 (ifstream)

#include <iostream>
#include <fstream>

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::cout << "Unable to open file for reading" << std::endl;
    }

    return 0;
}
  • std::getline: 파일의 내용을 한 줄씩 읽어들이는 함수.
  • inFile.close(): 파일 읽기가 끝나면 파일을 닫아야 함.

파일 입출력 동시에 하기 (fstream)

  • 파일을 읽고 쓸 수 있는 양방향 스트림.
  • 파일을 열고, 읽고, 쓸 수 있다.
#include <iostream>
#include <fstream>

int main() {
    std::fstream file("example.txt", std::ios::in | std::ios::out);

    if (file.is_open()) {
        file << "Writing some new data." << std::endl;  // 파일에 쓰기

        file.seekg(0);  // 파일 포인터를 다시 처음으로 이동
        std::string line;
        while (std::getline(file, line)) {
            std::cout << line << std::endl;  // 파일에서 읽기
        }

        file.close();  // 파일 닫기
    } else {
        std::cout << "Unable to open file" << std::endl;
    }

    return 0;
}
  • std::ios::in | std::ios::out: 읽기와 쓰기를 동시에 하기 위한 모드.
  • seekg(0): 파일 포인터를 처음으로 돌려서 파일을 다시 읽기 시작.

연습 문제

  1. student.txt 파일을 생성하고, 학생의 이름과 나이를 저장하는 프로그램을 작성해보자.
  2. student.txt 파일을 읽어서 파일의 내용을 출력하는 프로그램을 만들어보자.
profile
천천히 꾸준히 취미처럼 냐미😋

0개의 댓글