file input output operations c
C ++의 파일 입력 출력 연산 및 파일 포인터 함수에 관한 연구.
실시간 프로그래밍에서 우리는 표준 입출력 장치에서 수용 할 수없는 대량의 데이터를 다룹니다. 따라서 데이터 저장을 위해 보조 스토리지를 사용해야합니다. 보조 저장소를 사용하여 일반적으로 데이터를 파일 형식으로 저장합니다.
텍스트 또는 이진 형식의 스트림이라는 데이터 시퀀스를 사용하여 파일에서 데이터를 읽거나 파일에 데이터를 쓸 수 있습니다. C ++의 파일과 관련된 다양한 입출력 및 기타 작업이 있습니다. 이 튜토리얼에서는 다양한 클래스를 사용하는 파일과 관련된 이러한 작업을 설명합니다.
=> 독점 C ++ 교육 튜토리얼 시리즈를 보려면 여기를 방문하십시오.
학습 내용 :
C ++의 파일 입력 / 출력 클래스
cin과 cout을 포함한 표준 입력 및 출력 기능을 정의하는 C ++에서 iostream 클래스를 보았습니다. 이 클래스는 각각 키보드 및 모니터와 같은 표준 입력 및 출력 장치로 제한됩니다.
파일 작업과 관련하여 C ++에는 사용할 수있는 다른 클래스 집합이 있습니다.
이러한 클래스는 다음과 같이 설명됩니다.
- 오프 스트림 : 출력 파일 스트림을 나타내고 파일에 데이터를 쓰는 데 사용되는 파일 처리 클래스입니다.
- Ifstream : 입력 파일 스트림을 나타내며 파일에서 데이터를 읽는 데 사용되는 파일 처리 클래스입니다.
- Fstream : ifstream과 ofstream을 모두 처리 할 수있는 파일 처리 클래스입니다. 파일을 읽고 쓰는 데 사용할 수 있습니다.
C ++ 파일 처리에서 다음 작업이 지원됩니다.
- 파일 열기
- 파일 닫기
- 파일에서 읽기
- 파일에 쓰기
각 작업을 자세히 살펴 보겠습니다 !!
파일 열기
스트림 클래스 중 하나의 객체를 읽기 또는 쓰기를 위해 파일에 연결하는 것을 파일 열기라고합니다. 열린 파일은이 스트림 개체를 사용하여 코드로 표시됩니다. 따라서이 스트림 개체에 대해 수행 된 모든 읽기 / 쓰기 작업은 실제 파일에도 적용됩니다.
스트림으로 파일을 여는 일반적인 구문은 다음과 같습니다.
void open(const char* filename, ios::open mode mode)
여기,
filename => 열 파일의 경로와 이름을 포함하는 문자열.
mode => 파일이 열리는 모드를 나타내는 선택적 매개 변수.
C ++는 파일을 열 수있는 다양한 모드를 지원합니다. OR 연산자를 사용하여 이러한 모드의 조합을 지정할 수도 있습니다.
파일 모드 | 기술 |
---|---|
ios :: in | 읽기를 위해 입력 모드에서 파일을 엽니 다. |
ios :: out | 파일에 데이터를 쓰기 위해 파일을 출력 모드로 엽니 다. |
ios :: ate | 파일 끝에 초기 위치를 설정합니다. 파일 끝 플래그가 설정되지 않은 경우 초기 위치는 파일의 시작으로 설정됩니다. |
ios :: trunc | 쓰기 위해 파일이 열려 있고 이미 내용이있는 경우 내용이 잘립니다. |
ios :: app | 모든 내용이 파일 끝에 추가되도록 파일을 추가 모드로 엽니 다. |
ios :: binary | 바이너리 모드로 파일을 엽니 다. |
예를 들어,바이너리 모드에서 데이터를 추가하기 위해“myfile.dat”파일을 열려면 다음 코드를 작성할 수 있습니다.
ofstream myfile;
myfile.open(“myfile.dat”, ios::out|ios::app|ios::binary);
이미 언급했듯이 모드 매개 변수는 선택 사항입니다. 두 번째 매개 변수를 지정하지 않고 파일을 열면 ofstream, ifstream 또는 fstream의 열린 멤버 함수는 파일을 열기위한 기본 모드를 갖습니다.
다음과 같이 제공됩니다.
수업 | 기본 모드 |
---|---|
Ifstream | ios :: in |
ofstream | ios :: out |
Fstream | ios :: in | ios :: out |
따라서 open 함수에서 두 번째 매개 변수를 지정하지 않으면 사용되는 스트림 클래스에 따라 파일이 기본 모드로 열립니다.
파일 닫기
close 함수를 사용하여 파일을 닫고 파일에 대한 입력 및 출력 작업이 완료되면 파일이 보유한 리소스를 해제 할 수 있습니다.
파일을 닫는 기능은 다음과 같습니다.
void close()
따라서 위의 myfile 파일에 대한 작업이 완료되면 다음과 같이 파일을 닫을 수 있습니다.
myfile.close();
닫기 기능을 사용하여 파일을 닫으면 연결된 파일 개체를 다시 사용하여 다른 파일을 열 수 있습니다.
파일에서 읽기
스트림 추출 연산자 (>>)를 사용하여 파일에서 한 줄씩 정보를 읽을 수 있습니다. 이것은 cin을 사용하여 표준 입력에서 입력을 읽는 것과 유사합니다. 유일한 차이점은 파일의 경우 cin 대신 ifstream 또는 fstream 객체를 사용한다는 것입니다.
파일에서 읽기위한 샘플 코드는 다음과 같습니다.
ifstream myfile; myfile.open(“samp_file.txt”); cout<<”Reading from a file”<>data; cout<위의 코드에서 파일을 열고 스트림 추출 연산자 (>>)를 사용하여 파일의 내용을 읽습니다. 읽기가 끝나면 파일을 닫을 수 있습니다.
파일에 쓰기
파일 작업을 사용하여 파일에 데이터를 쓸 수도 있습니다. 파일에 데이터를 쓰는 데 사용하는 연산자는 스트림 삽입 연산자 (<<). Once again this is the same operator that we use to print data to a standard output device using cout. Difference between the two is that for file related writing we use ofstream or fstream object.
다음 예제 코드를 살펴 보겠습니다.
char data(100); ofstream myfile; myfile.open(“samp_file.txt”); cout<<”Enter the string to be written to file”<여기에서 입력에서 한 줄을 읽고 ofstream 개체로 열린 파일에 씁니다.
아래 코드 예제에서는 모든 파일 처리 작업의 데모를 제공합니다.
#include #include using namespace std; int main () { char data(100); // opening a file in write mode. ofstream myfile; myfile.open('E:\message.txt'); cout << 'Writing to the file' << endl; cout << 'Enter your name: '; cin.getline(data, 100); myfile << data << endl; cout <> data; cin.ignore(); myfile << data << endl; // close the opened file. myfile.close(); // opening a file in read mode. ifstream infile; infile.open('E:\message.txt'); cout << 'Reading from a file' <> data; cout << data <> data; cout << data << endl; infile.close(); return 0; }
산출:
파일에 쓰기
이름 입력 : Ved
나이 입력 : 7
파일에서 읽기
으로
7
위의 프로그램에서 먼저 쓰기 모드로 파일을 엽니 다. 그런 다음 데이터, 즉 이름과 나이를 읽고 파일에 씁니다. 그런 다음이 파일을 닫습니다. 다음으로 읽기 모드에서 동일한 파일을 열고 파일에서 한 줄씩 데이터를 읽어 화면에 출력합니다.
따라서이 프로그램은 모든 파일 I / O 작업을 다룹니다.
파일 상태 슬래그
파일 상태를 확인하는 데 사용되는 일부 멤버 함수가 있습니다. 이러한 모든 함수는 부울 값을 반환합니다.
최고의 운영 체제는 무엇입니까
이러한 함수는 다음과 같이 표로 작성되었습니다.
함수 기술 eof () 파일을 읽는 동안 파일 끝에 도달하면 true를 반환합니다. 불합격() 읽기 / 쓰기 작업이 실패하거나 포맷 오류가 발생하면 true를 반환합니다. 나쁜() 파일 읽기 또는 쓰기가 실패하면 true를 반환합니다. 좋은() 위의 함수를 호출하면 true를 반환하는 것과 동일한 경우 false를 반환합니다.
Get / Put 및 기타 특수 작업
지금까지 본 파일 I / O 스트림에는 iostream과 같은 다른 I / O 스트림과 유사한 내부 get 및 put 위치가 있습니다.
클래스 ifstream에는 다음 입력 작업에서 파일에서 읽을 요소 / 문자의 위치를 포함하는 내부 가져 오기 위치가 있습니다. ofstream 클래스에는 다음 출력 작업에서 기록 될 요소 / 문자의 위치를 포함하는 내부 배치 위치가 있습니다.
덧붙여서, fstream은 get과 put 포지션을 모두 가지고 있습니다.
이러한 위치를 사용하여 읽기 및 쓰기를 용이하게하기 위해 이러한 위치를 관찰하고 수정하는 데 사용되는 몇 가지 멤버 함수가 있습니다.
이러한 기능은 다음과 같습니다.
기능 기술 tellg () get 포인터의 현재 위치를 반환합니다. tellp () Put 포인터의 현재 위치를 반환합니다. Seekg (위치) 파일의 시작부터 계산하여 지정된 위치로 포인터를 가져옵니다. seekg (오프셋, 방향) 이동은 매개 변수 방향으로 주어진 점을 기준으로 오프셋 값에 대한 포인터를 가져옵니다. seekp (위치) 포인터를 파일의 시작부터 계산하여 지정된 위치로 이동합니다. seekp (오프셋, 방향) 포인터를 매개 변수 방향으로 지정된 점을 기준으로 오프셋 값으로 이동합니다.
매개 변수 방향 위의 함수 프로토 타입에서 주어진 것은 열거 유형 유형 Seekdir 오프셋이 계산되는 지점을 결정합니다.
다음 값을 가질 수 있습니다.
ios :: beg 스트림 시작부터 오프셋 ios :: cur 현재 위치에서 오프셋 ios :: end 스트림 끝에서 오프셋
이러한 함수의 사용법을 보여주는 완전한 예제를 보겠습니다.
#include #include using namespace std; int main() { fstream myfile; myfile.open('E:\myfile.txt',ios::out); if(!myfile) { cout<<'Cannot create File...'; } else { cout<<'New file created'< 산출:
새 파일 생성
초기 파일 포인터 위치 : 34
seekp (-1, ios :: cur) 이후, 파일 포인터 위치 : 33
seekg (5, ios :: beg) 후 파일 포인터 : 5
seekg (1, ios :: cur) 후 파일 포인터 : 6
위의 프로그램에서 볼 수 있듯이 텍스트 한 줄을 작성하는 파일이 생성되었습니다. 그런 다음 위에서 설명한 다양한 기능을 사용하여 파일 포인터의 다양한 위치를 표시합니다.
결론
이 자습서에서는 파일에서 데이터를 열고 닫고 읽고 / 쓰기하는 다양한 파일 작업을 살펴 보았습니다.
또한 파일의 특정 위치에 액세스하기 위해 파일 포인터를 변경하는 기능도 보았습니다. 이후 튜토리얼에서는 C ++와 관련된 몇 가지 중요한 주제에 대해 논의 할 것입니다.
추천 도서