C++에서 파일을 다루는 방법에 대해서 작성한다
- 파일을 생성하는 방법 - ofstream / 이미 있으면 삭제 후 다시만듬
- 파일이 있는지 확인하는 방법 - ifstream.is_open()
#include <fstream>
#include <iostream>
int main() {
using namespace std;
char automobile[50];
int year;
double a_price;
double b_price;
ofstream outFile; // 출력을 위한 파일 객체 생성
outFile.open("carinfo.txt"); // 파일에 연결 - 이미 파일이 있으면 기존 파일 내용이 사라진다
if (outFile.is_open()) {
cout << "파일 잘 열렸고 ";
}
else {
cout << "파일 잘 안열렸고";
}
cout << "자동차 메이커와 차종을 입력하세요 : ";
cin.getline(automobile, 50); // 파라미터 : (char *_Str, stream size _Count)
cout << "연식을 입력하세요 : ";
cin >> year;
cout << "구입 가격을 입력하세요 : ";
cin >> a_price;
b_price = a_price * 0.913;
// cout 을 통해서 보기
cout << fixed; // std:fixed - 표현 소수점을 고정 소수점으로 변경
cout.precision(2); // 고정소수점으로 변경했기 때문에 소수점을 2개까지만 표현
cout.setf(ios_base::showpoint); // 끝에 소수점이후 값이 없어도 precision까지 표현
cout << "메이커와 차종 : " << automobile << endl;
cout << "연식 : " << year << endl;
cout << "구입 가격 : " << a_price << endl;
cout << "현재 가격 : " << b_price << endl;
// outFile을 통해 저장
outFile << fixed;
outFile.precision(2);
outFile.setf(ios_base::showpoint);
outFile << "메이커와 차종 : " << automobile << endl;
outFile << "연식 : " << year << endl;
outFile << "구입 가격 : " << a_price << endl;
outFile << "현재 가격 : " << b_price << endl;
outFile.close();
return 0;
}
- 이미 있는 파일을 읽어오는 코드.
- getline이라는 string 해더에 있는 맴버함수를 사용하였다.
- 파일에서 라인을 읽어올 때 개행문자만을 인식하여 읽어오고 싶었다
- ifstream >> buffer의 경우 띄어쓰기를 기준으로도 읽어와서 불편함이 있어 사용하지 않았다
- getline 함수는 string, cstring, std 등에 존재하여 수만은 오버로딩이 존재하기 떄문에 찾는데 시간이 걸렸다
#include <fstream>
#include <iostream>
//#include <cstring>
#include <string>
int main() {
using namespace std;
ifstream inFile;
inFile.open("carinfo.txt");
if (!inFile.is_open()) { // 파일을 여는데 실패했다면
cout << "파일을 열 수 없습니다." << endl;;
}
else {
cout << "파일을 열었습니다." << endl;;
}
string buffer;
while (inFile.good()) { // 파일의 입력이 양호하고 EOF가 아닌 동안
getline(inFile, buffer); // string의 getline
cout << buffer << endl;
}
return 0;
}
'개발언어 > C++' 카테고리의 다른 글
(C++) 6. cctype 라이브러리 (0) | 2023.09.08 |
---|---|
(C++) 5. for, while, do while, if, if else, (0) | 2023.09.07 |
(C++) 4. Vector(C++98), Array(C++11) Template Class (0) | 2023.09.07 |
(C++) 3. 동적 배열과 동적 구조체 (0) | 2023.09.07 |
(C++) 2. 포인터와 메모리 해제 (0) | 2023.09.07 |