본문 바로가기
기술자료/C C++

[賢彬][C++] ofstream, ifstream에 대해서

by 알 수 없는 사용자 2009. 8. 5.
728x90
반응형
스트림과 printf() 함수

 

n  대부분의 C++는 또 C의 입출력 라이브러리 함수를 제공하는데 printf() 포함된다. 비록 printf() cout보다 사용하기는 편하지만 C++에서는 바람직하지 않다.

n  Printf()는 형의 안정성을 제공하진 않는다. 따라서 정수형을 문자형으로 무심코 출력하라거나 그 반대로 출력하라는 등의 명령을 내릴 수 있다. printf()는 클래스를 지원하지 않는다. 따라서 프로그래머는 클래스 자료를 출력시키지 못한다. 각 클래스의 멤버를 하나씩 printf()에 주어져야 한다.

n  Printf()를 사용하기 위해선 #include stdio.h를 포함시킨다.

n  Printf()에서 사용되는 일반적인 변환 상술자를 알아본다. 아래의 표를 본다.

상술자

사용

%s

문자열

%d

정수형

%l

long 정수형

%ld

long 정수형

%f

float

 

n  printf()를 사용한 간단한 프로그램 예제

#include <stdio.h>

#include <iostream>

using namespace std;

 

int main()

{

        printf ("%s", "Hello world\n");

 

        char *str = "hello again!\n";

        printf("%s\n", str);

 

        int x = 5;

        printf ("%d\n", x);

 

        char *pstrTwo = "here's some values: ";

        char *pstrThress = " and also these.";

        int y = 10, z = 30;

        long longVal = 98765;

        float floatval = 9.9;

 

        printf ("%s, %d, %d, %s, %ld, %f\n", pstrTwo, y, z, pstrThress, longVal, floatval);

        char *pstrFour = "Formatted: ";

        printf ("%s, %5d, %10d, %10.5f\n", pstrFour, y,z, floatval);

        return 0;

        return 0;

}

/// 결과

Hello world

hello again!

 

5

here's some values: , 10, 30,  and also these., 98765, 9.900000

Formatted: ,    10,         30,    9.90000

 

 

파일의 입력과 출력

 

 

n  스트림은 키보드나 디스크로부터 자료를 받아들이고 또 화면이나 디스크로 출력을 하는데 단일한 방식을 사용한다.

n  파일을 열고 닫을 때 프로그래머는 ifstream ostream의 객체를 알아보기로 한다.

 

 

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(“ttext.txt”);

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

-       ifstream fin(“ttext.txt”);

n  close()

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

n  간단한 예제 프로그램

/*

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

*  visual studio 2008 professional service pack1

*  windows xp home edition  service pack 3

*/

 

#include <fstream>

#include <iostream>

using namespace std;

 

int main()

{

        char fileName[80];

        /// 입력용으로사용할변수

        char buffer[255];     

        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(buffer, 255);

 

        /// 파일에쓴다.

        fout << buffer << "\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;

}

 


출처 : http://yuihorie.tistory.com/85
728x90