ostream/ifstream C++ stl 문자열 스트림 클래스

[출처] http://blog.naver.com/PostView.nhn?blogId=dolicom&logNo=10086114631

ofstream

 

n  파일로부터 읽어들이거나 쓰기 위해 사용되는 특수한 객체를 ofstream객체라 한다.

n  ofstream 객체는 iostream 객체로부터 파생되었다.

n  파일에 쓰려면 ofstream 객체를 만들고 디스크의 특정 파일과 연결지어야 한다.

n  ofstream 객체를 사용하려면 먼저 프로그래머는 #include <fstream.h>를 포함해야 한다.

 

 

조건을 나타내는 상태

 

n  iostream 객체는 입력과 출력 상태를 알리는 플래그를 가지고 있다.

n  불린 함수 eof(), bad(), fail(), good()를 사용하여 이 플래그들을 검사할 수 있다.

-       eof() : iostream 객체가 EOF를 만나면 참값을 반환한다.

-       bad() :  유효하지 않은 연산자를 시도하려면 참값을 반환

-       fail() : bad() 함수가 실패하면

-       good() : 위의 세 개의 함수가 거짓을 참을 반환한다.

 

입출력을 위한 파일 열기

n  만약 ttext.txt 파일을 ofstream 객체로 열기 위해 ofstream 객체의 인스턴스를 선언하고 매개 변수로 파일 이름을 전달한다.

-       ofstream fout(“text.txt”);

n  입력용으로 열기 위한 방법

-       ifstream fin(“text.txt”);

n  close()

-       읽기용이나 쓰기용, 읽고 동시에 쓰기용으로 열어놓은 파일은 입출력을 마친 뒤 사용을 한다.

 

 

순차 접근 파일 생성

 

#include<iostream>

#include<fstream>

using std::ofstream; //파일에 쓰기용

 

File Access Type

ios::app 파일 끝에 모든 출력을 추가

ios::ate 출력을 위해 파일을 열고 파일의 끝으로 이동

ios::in 입력용 파일 열기

ios::out 출력용 파일 열기

ios::trunc 파일이 존재한다면, 파일 내용을 모두 삭제(ios::out을 위한 디폴트 동작)

ios::binary 텍스트가 아닌 이진으로 입출력하기 위한 파일열기

 

int main()
{

   int accoount;

   char name[30];

   double balance;

 

  ofstream outFile("test.dat",ios::out); //파일을 연다, 없으면 생성

  while(cin>>account>>name>>balance)

      outFile<<account<<' '<<name<<' '<<balance<<endl;  //이런형식으로 저장됨

  return 0;

}

 

순차 접근 파일에서데이터 읽기

 
using std::ifstream; //파일 읽기용 
 

istream : seekg(seek get) //읽기용 포인터 탐색

ostream : seekp(seek put) //쓰기용 포인터 탐색

 

예)

  fileObject.seekg(n); //fileObject의 n바이트로 이동(디폴트ios::beg)

  fileObject.seekg(n, ios::cur); //fileObject의 현재 위치에서 n바이트 앞으로 이동

  fileObject.seekg(n, ios::end); //fileObject의 끝에서 뒤로 n바이트로 이동

  fileObject.seek(0, ios::end); //fileObject의 끝으로 이동

 

int main()
{

   int accoount;

   char name[30];

   double balance;

 

  ifstream inFile("test.dat",ios::in);   //읽을 파일을 연다.

  while(inFile>>account>>name>>balance)

      cout << account << ' ' << name << ' ' << balance << endl;  //이런형식으로 저장됨

  return 0;

}

 

임의 접근 파일에 임의로 데이터 쓰기

 

#include<fstream>

 

using std::ofstream;

using std::ifstream;

 

typedef struct {

   char name[16];

   int    id[20];

   int age;

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

}  Student;

 

Student memb;

 

int main()
{

 

// case 1

   ifstream inFile("testIn.dat",ios::in);

  inFile.read(reinterpret_cast<char*>(&memb), sizeof(Student));

 

  ofstream outFile("testOut.data",ios::binary);

  outFile.seekp(0, ios::end);

  outFile.write(reinterpret_cast<const char*>(&memb),sizeof(Student));

 

// Case 2

  while(inFile&& !inFile.eof())  {    //파일의 끝까지 모든 레코드를 읽음

      inFile.read(reinterpret_cast<char*>(&memb),sizeof(Student));       //다음 레코드를 읽음

      outFile.write(reinterpret_cast<const char*>(&memb),sizeof(Student));

  }

 

// Case 3

  fstream outFile("testmemb.dat",ios::in | ios::out); //읽고 쓰기위한 파일 열기

 

  return 0;

 

 

파일 열고 쓰기 예

 

/*

읽기와쓰기용으로파일을열기

*/

 

#include <fstream>

#include <iostream>

using namespace std;

 

char gbuffer[1024];    

char fileName[80];

 

int main()

{

        cout << "file name: ";

        cin >> fileName;

 

        /// 쓰기용

        ofstream fout(fileName);

        fout << "this line written directory to the file.....\n";

        cout << "Enter text for the file:";

        /// 파일뒤에개행문자를없앤다.

        cin.ignore(1,'\n');

 

        /// 사용자입력을받는다.

        cin.getline(gbuffer, 255);

 

        /// 파일에쓴다.

        fout << gbuffer<< "\n";

 

        /// 파일객체를닫고다시열기를기다린다.

        fout.close();

 

        /// 읽기를위해서스트림을다시연다

        ifstream fin(fileName);

        cout << "Here's the contents of the file: \n";

        char ch;

        while (fin.get(ch))

        {

               cout << ch;

        }

 

        cout << "\n";

        cout << "### End of file contents ###\n";

        fin.close();

        return 0;

}

 








본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
34 리눅스마스터 1급 필기 - 2013/2014년 기출문제 file 졸리운_곰 2014.09.07 562
33 [MFC] Find local network hosts ip, 로컬네트워크의 IP 주소 알아내기 졸리운_곰 2014.08.27 766
32 (Unicode) CString <==> const char* 졸리운_곰 2014.08.27 640
31 SWIG 의 간단한 개요 [C interface to others scripting lanuage] file 졸리운_곰 2014.08.19 472
30 Creating a Child Process with Redirected Input and Output 졸리운_곰 2014.08.17 573
29 C++로 짠 간단한 윈도우 서비스 file 졸리운_곰 2014.05.27 1003
28 문자열 빈도수 계산 프로그램 졸리운_곰 2014.03.03 3497
27 문자열 빈도 프로그램 file 졸리운_곰 2014.03.03 1159
26 문자열 검색 함수 - strchr(), strrchr(), strstr(), strspn(), strcspn(), strpbrk() 졸리운_곰 2014.03.03 1258
» ostream/ifstream C++ stl 문자열 스트림 클래스 졸리운_곰 2014.03.03 1225
24 파일의 존재여부 검사 [access()함수] access() 파일 존재나 접근 권한을 확인합니다. 졸리운_곰 2014.03.03 1290
23 VC++ 파일에서 한 라인씩 읽기 졸리운_곰 2014.03.02 1199
22 linux c 파일 접근권한 정보 가져오기 졸리운_곰 2014.02.28 1163
21 Search Title Of Opened Windows file 졸리운_곰 2014.02.27 978
20 MFC VC++ 파일의 존재유무 체크 졸리운_곰 2014.02.18 1587
19 MFC VC++ : windows tcpip socket Send() function example 졸리운_곰 2014.02.18 1593
18 Check whether one specific process is running on windows with C++ 졸리운_곰 2014.02.18 1099
17 VC++ : Win32 console App run as to be hide (background) 졸리운_곰 2014.02.18 1245
16 VC++ : Win32 console App run as to be hide (background) 졸리운_곰 2014.02.18 1256
15 VC++ : windows : TCPIP SOCKET SERVER and CLIENT 졸리운_곰 2014.02.18 1097
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED