산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C++ 파일 및 스트림

지금까지 iostream을 사용해 왔습니다. cin을 제공하는 표준 라이브러리 그리고 각각 표준 입력에서 읽고 표준 출력으로 쓰는 방법.

이 튜토리얼에서는 파일을 읽고 쓰는 방법을 알려줍니다. fstream이라는 또 다른 표준 C++ 라이브러리가 필요합니다. , 이는 세 가지 새로운 데이터 유형을 정의합니다 -

Sr.No 데이터 유형 및 설명
1

오프스트림

이 데이터 유형은 출력 파일 스트림을 나타내며 파일을 생성하고 파일에 정보를 쓰는 데 사용됩니다.

2

이프스트림

이 데이터 유형은 입력 파일 스트림을 나타내며 파일에서 정보를 읽는 데 사용됩니다.

3

fstream

이 데이터 유형은 일반적으로 파일 스트림을 나타내며 ofstream 및 ifstream의 기능을 모두 가지고 있어 파일을 만들고, 파일에 정보를 쓰고, 파일에서 정보를 읽을 수 있습니다.

C++에서 파일 처리를 수행하려면 헤더 파일 이 C++ 소스 파일에 포함되어야 합니다.

파일 열기

파일을 읽거나 쓰려면 먼저 파일을 열어야 합니다. 오프스트림 또는 fstream 쓰기를 위해 파일을 여는 데 사용할 수 있습니다. 그리고 ifstream 객체는 읽기 전용으로 파일을 여는 데 사용됩니다.

다음은 fstream, ifstream, ofstream 객체의 멤버인 open() 함수의 표준 구문입니다.

void open(const char *filename, ios::openmode mode);

여기서 첫 번째 인수는 열려는 파일의 이름과 위치를 지정하고 두 번째 인수는 open() 멤버 함수는 파일을 열어야 하는 모드를 정의합니다.

Sr.No 모드 플래그 및 설명
1

ios::앱

추가 모드. 해당 파일에 대한 모든 출력이 끝에 추가됩니다.

2

ios::ate

출력할 파일을 열고 읽기/쓰기 컨트롤을 파일 끝으로 이동합니다.

3

ios::in

읽을 파일을 엽니다.

4

ios::아웃

쓰기 위해 파일을 엽니다.

5

ios::trunc

파일이 이미 있는 경우 파일을 열기 전에 내용이 잘립니다.

OR로 이 값 중 둘 이상을 결합할 수 있습니다. 함께 합니다. 예를 들어 쓰기 모드에서 파일을 열고 이미 존재하는 경우 파일을 자르려면 다음 구문이 됩니다. -

ofstream outfile;
outfile.open("file.dat", ios::out | ios::trunc );

비슷한 방법으로 다음과 같이 읽기 및 쓰기 목적으로 파일을 열 수 있습니다. -

fstream  afile;
afile.open("file.dat", ios::out | ios::in );

파일 닫기

C++ 프로그램이 종료되면 자동으로 모든 스트림을 플러시하고 할당된 모든 메모리를 해제하고 열려 있는 모든 파일을 닫습니다. 그러나 프로그래머는 프로그램을 종료하기 전에 열려 있는 모든 파일을 닫아야 합니다.

다음은 fstream, ifstream, ofstream 객체의 멤버인 close() 함수의 표준 구문입니다.

void close();

파일에 쓰기

C++ 프로그래밍을 수행하는 동안 화면에 정보를 출력하기 위해 해당 연산자를 사용하는 것처럼 스트림 삽입 연산자(<<)를 사용하여 프로그램에서 파일에 정보를 씁니다. 유일한 차이점은 ofstream 또는 fstream cout 대신 개체 개체.

파일에서 읽기

키보드에서 정보를 입력하기 위해 해당 연산자를 사용하는 것처럼 스트림 추출 연산자(>>)를 사용하여 파일에서 프로그램으로 정보를 읽습니다. 유일한 차이점은 ifstream을 사용한다는 것입니다. 또는 fstream cin 대신 개체 개체.

읽기 및 쓰기 예

다음은 읽기 및 쓰기 모드에서 파일을 여는 C++ 프로그램입니다. 사용자가 입력한 정보를 afile.dat라는 파일에 쓴 후 프로그램은 파일에서 정보를 읽어 화면에 출력합니다. −

라이브 데모
#include <fstream>
#include <iostream>
using namespace std;
 
int main () {
   char data[100];

   // open a file in write mode.
   ofstream outfile;
   outfile.open("afile.dat");

   cout << "Writing to the file" << endl;
   cout << "Enter your name: "; 
   cin.getline(data, 100);

   // write inputted data into the file.
   outfile << data << endl;

   cout << "Enter your age: "; 
   cin >> data;
   cin.ignore();
   
   // again write inputted data into the file.
   outfile << data << endl;

   // close the opened file.
   outfile.close();

   // open a file in read mode.
   ifstream infile; 
   infile.open("afile.dat"); 
 
   cout << "Reading from the file" << endl; 
   infile >> data; 

   // write the data at the screen.
   cout << data << endl;
   
   // again read the data from the file and display it.
   infile >> data; 
   cout << data << endl; 

   // close the opened file.
   infile.close();

   return 0;
}

위의 코드를 컴파일하고 실행하면 다음과 같은 샘플 입력 및 출력이 생성됩니다. -

$./a.out
Writing to the file
Enter your name: Zara
Enter your age: 9
Reading from the file
Zara
9

위의 예는 getline() 함수를 사용하여 외부에서 줄을 읽고 ignore() 함수를 사용하여 이전 읽기 문에서 남은 추가 문자를 무시하는 것과 같이 cin 개체의 추가 기능을 사용합니다.

파일 위치 포인터

istream 둘 다 및 ostream 파일 위치 포인터의 위치를 ​​변경하기 위한 멤버 함수를 제공합니다. 이 멤버 함수는 seekg입니다. ("seek get") istream 및 seekp ("검색 넣기") ostream.

Seekg 및 seekp에 대한 인수는 일반적으로 긴 정수입니다. 탐색 방향을 나타내기 위해 두 번째 인수를 지정할 수 있습니다. 탐색 방향은 ios::beg일 수 있습니다. (기본값) 스트림의 시작 부분을 기준으로 위치 지정, ios::cur 스트림 또는 ios::end의 현재 위치를 기준으로 위치 지정 스트림의 끝을 기준으로 위치 지정을 위한 것입니다.

파일 위치 포인터는 파일의 시작 위치에서 바이트 수로 파일의 위치를 ​​지정하는 정수 값입니다. "get" 파일 위치 포인터를 배치하는 몇 가지 예는 다음과 같습니다. -

// position to the nth byte of fileObject (assumes ios::beg)
fileObject.seekg( n );

// position n bytes forward in fileObject
fileObject.seekg( n, ios::cur );

// position n bytes back from end of fileObject
fileObject.seekg( n, ios::end );

// position at end of fileObject
fileObject.seekg( 0, ios::end );

C 언어

  1. C++ 변수, 리터럴 및 상수
  2. C++ 클래스 및 개체
  3. C++ friend 함수 및 friend 클래스
  4. C 파일 처리
  5. Python 디렉토리 및 파일 관리
  6. C++의 구조 및 클래스
  7. C - 헤더 파일
  8. C++ 날짜 및 시간
  9. C++ 오버로딩(연산자와 함수)
  10. 밀 파일이란 무엇입니까?