[C++ I/O]파일 입출력

Jin Hur·2022년 6월 9일
0

C++

목록 보기
5/18

간단히 파일을 읽고 쓰려면 <<, >> 연산자가 편리
<<, >> 연산자는 오직 텍스트 파일에 대해서만 작동한다.

파일 쓰기(출력)

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

using namespace std;

const string FileName = ".\\hello.txt";

/*
* 파일 쓰기
*/
void WriteToFile(){
    ofstream fout;
    fout.open(FileName);
    if(!fout){
        // .. 에러처리
    }

    int age = 28;
    string name = "HurJin";
    char song[] = "Yesterday";
    
    fout << age << endl;
    fout << name << endl';
    fout << song << endl;

    fout.close();
}

파일 읽기(입력)

/*
* 파일 읽기
*/
void ReadFromFile() {
    ifstream fin;
    fin.open(FileName);
    if(!fin) {
	// .. 에러처리
    }

    string age;
    string name;
    string song;
    
    fin >> age;
    fin >> name;
    fine >> song;

    cout << age << endl;
    cout << name << endl;
    cout << song << endl;
}

파일 쓰기 with append mode

/*
* 파일 쓰기 with 파일 모드(append)
*/ 
void WriteToFileWithAppendMode(){
    ofstream fout;
    fout.open(FileName, ios::app);
    if(!fout){
        // .. 에러처리
    }

    string major = "Computer Science";
    char hobby[] = "Pingpong";
    
    fout << major << endl;
    fout << hobby << endl';
    fout << endl << endl;
    fout << "Bye~!" << endl;

    fout.close();
}

파읽 읽기 with get/getline()

/*
* 파일 읽기 with get / getline
*/
void ReadFromFileWithGet() {
    ifstream fin;
    fin.open(FileName);
    if(!fin) {
        cerr << "ERR: 파일 열기 실패" << endl;
        return;
    }

    // 한줄씩 읽기
    while(true) {
        string s = "";
        // 한 글자씩 읽기
        while(true) {
            char c;
            c = fin.get();
	if(c == EOF)
	    return;
	if(c == '\n')
	    break;
   	s += c;
        }
        cout << s << endl;
    }
}

void ReadFromFileWithGetline() {
    ifstream fin;
    fin.open(FileName);
    if(!fin) {
        cerr << "ERR: 파일 열기 실패" << endl;
        return;
    }

    while(getline(fin, s)) {
        cout << s << endl;
    }
}

0개의 댓글