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;
}

 

+ Recent posts