반응형
[C++] 파일 입출력 fstream ifstream ofstream (char배열, string)
띄어쓰기 포함 쓰기 방법은 한 줄 입력 받는 것이다
char배열을 써도 되고 편리한 string을 사용해도 된다.
#include <iostream> #include <fstream> 파일 입출력 헤더파일 #include <string> 문자열 헤더파일
만약 입력이나 출력만 할 경우
#include <ifstream> 입력 (Input File Stream)
#include <ofstream> 출력 (Output File Stream)
//방법 1
ofstream file;
file.open(filePath, ios::out);
//방법 2
ofstream file(filePath, ios::out)
파일을 열지 못했을 때 예외처리
// 예외처리 1
if(file.fail()) cout << "ERROR" << endl;
// 예외처리 2
if(!file.is_open()) cout << "ERROR" << endl;
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
#define FILE_PATH "test.txt" // 경로 지정해서 변경
// 절대경로 기입 안할 시 프로젝트 폴더에 들어감
void WriteFile(string filePath);
void ReadFile(string filePath);
void AppendFile(string filePath);
int main()
{
//WriteFile(FILE_PATH);
ReadFile(FILE_PATH);
//AppendFile(FILE_PATH);
return 0;
}
// 파일 쓰기
void WriteFile(string filePath)
{
ofstream file;
file.open(filePath, ios::out);
// ofstream file(filePath, ios::out) 똑같
string str;
while (true)
{
cout << "-1 입력시 쓰기 종료" << endl;
cout << "입력 : ";
getline(cin, str);
if (str == "-1")
break;
file << str << endl;
}
}
// 파일 읽기
void ReadFile(string filePath)
{
ifstream file;
file.open(filePath, ios::in);
string str;
//char line[256] = {};
//while (file.getline(line, 256)) // char 배열로 읽어오기
while (getline(file, str))
{
cout << str << endl;
}
}
// 파일 끝에 추가
void AppendFile(string filePath)
{
ofstream file;
file.open(filePath, ios::app);
string str;
while (true)
{
cout << "-1 입력시 쓰기 종료" << endl;
cout << "입력 : ";
getline(cin, str);
if (str == "-1")
break;
file << str << endl;
}
}
file.close();
스코프가 끝나면 자동으로 자원을 해지해 주지만 명시적으로 작성해주면 좋다.
반응형
'Programming > C, C++' 카테고리의 다른 글
C++ 바이트 패딩 (Byte Padding) (0) | 2022.12.14 |
---|---|
C++ 구조체 (structure type) (0) | 2022.12.14 |
C++ 타입(형) 변환 (Type conversion, Type Casting) (0) | 2022.12.14 |
C++ 한글 문자, 한글 문자열 출력 wchar_t (0) | 2022.12.13 |
C++ STL 컨테이너 Vector의 재할당 확인하기 (0) | 2022.12.11 |