C++에서 파일을 읽고 쓰는 방법

How Read Write File C

이 기사에서는 몇 가지 예제를 사용하여 C++ 프로그래밍 언어로 파일을 읽고 쓰는 방법을 보여줍니다. 읽기 및 쓰기와 같은 C++ 파일 작업을 이해하려면 먼저 C++에서 스트림의 개념을 이해해야 합니다.

스트림이란 무엇입니까?

스트림은 단순히 데이터 또는 문자의 흐름입니다. 스트림에는 입력 스트림과 출력 스트림의 두 가지 유형이 있습니다. 입력 스트림은 키보드와 같은 외부 입력 장치에서 데이터를 읽는 데 사용되며 출력 스트림은 모니터와 같은 외부 출력 장치에 데이터를 쓰는 데 사용됩니다. 파일은 입력 및 출력 소스로 간주될 수 있습니다.





C++에서는 스트림을 사용하여 외부 소스와 데이터를 주고받습니다.



내장 클래스를 사용하여 입출력 스트림, 즉 ios에 액세스할 수 있습니다.

다음은 C++ 프로그래밍 언어의 스트림 클래스 계층입니다.



cin 및 cout 객체는 각각 키보드에서 데이터를 읽고 모니터에 출력을 표시하는 데 사용됩니다. 또한, 입력 파일 스트림을 나타내는 ifstream은 파일에서 데이터 스트림을 읽는 데 사용되며, 출력 파일 스트림을 나타내는 ofstream은 파일에 데이터 스트림을 쓰는 데 사용됩니다.

iostram.h 파일에는 C++ 프로그래밍 언어에서 필요한 모든 표준 입/출력 스트림 클래스가 포함되어 있습니다.

이제 스트림의 기본 사항을 이해했으므로 C++의 파일 작업을 더 잘 이해하는 데 도움이 되는 다음 예제를 설명합니다.

  • 예 1: 파일 열기 및 닫기
  • 예 2: 파일에 쓰기
  • 예 3: 파일에서 읽기
  • 예 4: 파일 읽기 및 쓰기
  • 예 5: 이진 파일 읽기 및 쓰기

예 1: 파일 열기 및 닫기

이 예제 프로그램에서는 C++에서 파일을 열고 닫는 방법을 보여줍니다. 아래 프로그램에서 볼 수 있듯이 파일 작업에 필요한 라이브러리가 포함되어 있습니다.

파일을 열고 닫으려면 ofstream의 객체가 필요합니다. 그런 다음 파일을 읽거나 쓰려면 파일을 열어야 합니다. ofstream 클래스에 액세스할 수 있도록 라인 번호 1에 fstream 헤더 파일을 포함했습니다.

main 함수 내부에서 ofstream의 객체로 myFile_Handler를 선언했습니다. 그런 다음 open() 함수를 사용하여 빈 파일을 만들고 close() 함수를 사용하여 파일을 닫을 수 있습니다.

#포함하다

사용 네임스페이스시간;

정수기본()
{
ofstream myFile_Handler;

// 파일 열기
myFile_Handler.열려있는('파일_1.txt');

// 파일 닫기
myFile_Handler.닫다();
반품 0;
}

이제 프로그램을 컴파일하고 출력을 검사합니다. 아래 출력 창에서 볼 수 있듯이 프로그램 실행 후 File_1.txt 파일이 생성되었습니다. 파일에 내용을 쓰지 않았기 때문에 파일 크기는 0입니다.

예 2: 파일에 쓰기

이전 예제 프로그램에서는 파일을 여는 방법과 파일을 닫는 방법을 보여주었습니다. 이제 파일에 무언가를 작성하는 방법을 보여드리겠습니다.

스트림 삽입 연산자를 사용하여 파일에 쓸 수 있습니다.<<. In this program, we have used the file handler and insertion operator to write two lines in the file. The insertion operator (<<) indicates that we are inserting the string into the output file stream object.

#포함하다

사용 네임스페이스시간;

정수기본()
{
ofstream myFile_Handler;
// 파일 열기
myFile_Handler.열려있는('파일_1.txt');

// 파일에 쓰기
myFile_Handler<< '샘플 테스트 파일입니다. ' <<;
myFile_Handler<< '파일의 두 번째 줄입니다. ' <<;

// 파일 닫기
myFile_Handler.닫다();
반품 0;
}

이제 위의 프로그램을 컴파일하여 실행해 보겠습니다. 아래에서 볼 수 있듯이 File_1.txt 파일에 성공적으로 작성했습니다.

예 3: 파일에서 읽기

이전 예에서 파일에 내용을 쓰는 방법을 보여주었습니다. 이제 Example-2에서 생성한 파일의 내용을 읽어 표준 출력 장치인 모니터에 표시해 보겠습니다.

getline() 함수를 사용하여 파일에서 전체 줄을 읽은 다음 모니터에 줄을 인쇄하기 위해 cout합니다.

#포함하다
#포함하다
#포함하다

사용 네임스페이스시간;

정수기본()
{
ifstream myFile_Handler;
문자열 myLine;

// 읽기 모드에서 파일 열기
myFile_Handler.열려있는('파일_1.txt');

만약(myFile_Handler.is_open())
{
// 파일을 계속 읽습니다.
동안(도착(myFile_Handler, myLine))
{
// 표준 출력에 라인을 출력
비용 <<마이라인<<;
}
// 파일 닫기
myFile_Handler.닫다();
}
또 다른
{
비용 << '파일을 열 수 없습니다!';
}
반품 0;
}

이제 cat File_1.txt 명령을 사용하여 File_1.txt의 내용을 인쇄합니다. 프로그램을 컴파일하고 실행하면 출력이 파일의 내용과 일치한다는 것이 분명합니다. 따라서 파일을 성공적으로 읽고 파일의 내용을 모니터에 인쇄했습니다.

예 4: 파일 읽기 및 쓰기

지금까지 파일을 열고, 읽고, 쓰고, 닫는 방법을 살펴보았습니다. C++에서는 파일을 동시에 읽고 쓸 수도 있습니다. 파일을 읽고 쓰려면 fstream 객체를 가져와 ios::in 및 ios::out 모드에서 파일을 열어야 합니다.

이 예에서는 먼저 파일에 일부 내용을 씁니다. 그런 다음 파일에서 데이터를 읽고 모니터에 인쇄합니다.

#포함하다
#포함하다
#포함하다

사용 네임스페이스시간;

정수기본()
{
fstream myFile_Handler;
문자열 myLine;

// 파일 열기
myFile_Handler.열려있는('파일_1.txt', 이오스::~에 |iOS::);

// 파일이 열렸는지 확인
만약(!myFile_Handler)
{
비용 << '파일이 열리지 않았습니다!';
출구(1);
}

// 파일에 쓰기
myFile_Handler<< '1. 다른 샘플 테스트 파일입니다. ' <<;
myFile_Handler<< '2. 이것은 파일의 두 번째 줄입니다. ' <<;

myFile_Handler.시크(iOS::빌다);

// 파일 읽기
만약(myFile_Handler.is_open())
{
// 파일을 계속 읽습니다.
동안(도착(myFile_Handler, myLine))
{
// 표준 출력에 라인을 출력
비용 <<마이라인<<;
}

// 파일 닫기
myFile_Handler.닫다();
}
또 다른
{
비용 << '파일을 열 수 없습니다!';
}
myFile_Handler.닫다();
반품 0;
}

이제 우리는 프로그램을 컴파일하고 실행할 것입니다.

예 5: 이진 파일 읽기 및 쓰기

이 예제에서는 클래스를 선언한 다음 개체를 이진 파일에 씁니다. 이 예제를 단순화하기 위해 공용 변수 emp_id를 사용하여 Employee 클래스를 선언했습니다. 그런 다음 이진 파일을 읽고 출력을 모니터에 인쇄합니다.

#포함하다
#포함하다

사용 네임스페이스시간;

수업직원
{
공공의:
정수emp_id;
};

정수기본()
{
ofstream binOutFile_Handler;
ifstream binInFile_Handler;

직원 empObj_W, empObj_R;

// 파일 열기
binOutFile_Handler.열려있는('직원.dat', 이오스:: |iOS::바이너리);

// 파일이 열렸는지 확인
만약(!binOutFile_Handler)
{
비용 << '파일이 열리지 않았습니다!';
출구(1);
}

// empObj_W 초기화
empObj_W.emp_id = 1512;

// 파일에 쓰기
binOutFile_Handler.쓰다(( *) &empObj_W,크기(직원));
binOutFile_Handler.닫다();

만약(!binOutFile_Handler.좋은())
{
비용 << '바이너리 파일을 쓰는 동안 오류가 발생했습니다!' <<;
출구(2);
}

// 이제 employee.dat 파일을 읽어봅시다.
binInFile_Handler.열려있는('직원.dat', 이오스::~에 |iOS::바이너리);
// 파일이 열렸는지 확인
만약(!binInFile_Handler)
{
비용 << '파일이 열리지 않았습니다!';
출구();
}

// 바이너리 파일의 내용을 읽는다.
binInFile_Handler.읽다(( *) &empObj_R,크기(직원));
binInFile_Handler.닫다();

만약(!binInFile_Handler.좋은())
{
비용 << '바이너리 파일을 읽는 동안 오류가 발생했습니다!' <<;
출구(4);
}

// empObj_R의 출력을 출력합니다.
비용 << '직원 정보 : ' <<;
비용 << '직원 ID : ' <<empObj_R.emp_id <<;

반품 0;
}

결론

파일은 주로 데이터를 저장하는 데 사용되며 실제 프로그래밍에서 중요한 역할을 합니다. 이 기사에서는 여러 예제를 통해 C++ 프로그래밍 언어로 다양한 파일 작업을 사용하는 방법을 보여주었습니다. 또한 텍스트 파일과 바이너리 파일 모두에서 데이터를 읽고 쓰는 방법을 보여주었습니다.