첫번째 프로젝트 - Stack Calculator 03
Here is File I/O function
이번에는 file I/O 입니다. 간단하죠.
///////////////////////////////////////////////////////////////////////////////
// File Name : file.h //
// Date : 2004 / 10 / 8 //
// Compiler : g++ //
// OS : Red Hat Linux 7.1 //
//----------------------------------------------------------------//
// Etc : Data Strucure Assignment #1 //
// Stack Calculator //
// ver : 1.0 //
// Description //
// File의 입출력을 담당하는 class File 의 선언부 //
///////////////////////////////////////////////////////////////////////////////
#ifndef __iostream_H__ //기본 입출력
#define __iostream_H__
#include <iostream.h>
#endif
#ifndef __FSTREAM_H__ //파일 입출력
#define __FSTREAM_H__
#include <fstream.h>
#endif
#ifndef __STRING_H__ //문자열을 다루기 위함
#define __STRING_H__
#include <string.h>
#endif
class File
{
public:
File(); // constructor
~File(); // destructor
int Input_fopen(char *filename); //Input file open
int Input_fclose(); //Input file close
int Output_fopen(); //output file open
int Output_fclose(); //input file close
char* ReadLine(); // read one line
int Write(char); //output 파일에 한 글자 출력
int WriteLine(char* ); //output 파일에 문자열 출력
private:
char m_StrBuf[80]; // string buffer
ifstream m_fin; // input file stream
ofstream m_fout; //output file stream
};
///////////////////////////////////////////////////////////////////////////////
// File Name : file.cpp //
// Date : 2004 / 10 / 8 //
// Compiler : g++ //
// OS : Red Hat Linux 7.1 //
//----------------------------------------------------------------//
// Etc : Data Strucure Assignment #1 //
// Stack Calculator //
// ver : 1.0 //
// Description //
// file의 입출력을 담당하는 Class의 구현부 //
///////////////////////////////////////////////////////////////////////////////
#ifndef __FILE_H__
#define __FILE_H__
#include "file.h"
#endif
File::File() //생성자
{}
File::~File() //소멸자
{
m_fin.close(); //input file close
m_fout.close(); //output file close
}
int File::Input_fopen(char* filename) // input file open
{
m_fin.open (filename, ifstream::in);
return 1;
}
int File::Input_fclose() // input file close
{
m_fin.close ();
return 1;
}
int File::Output_fopen() // output file open
{
m_fout.open ("output.txt", ofstream::out | ofstream::app);
return 1;
}
int File::Output_fclose() // output file close
{
m_fout.close();
return 1;
}
// File::ReadLine()
// Input : void
// output : char*
// Purpose : 파일로부터 한 줄을 읽어서 (getline) 여백을 제거한 후 리턴
char* File::ReadLine()
{
int loop1, loop2;
m_fin.getline(m_StrBuf,80); // 파일에서 한 줄을 읽어옴
for (loop1 = 0; loop1 <=strlen(m_StrBuf); loop1++) //문자열의 처음 부터 끝까지 검사
{
if ( m_StrBuf[loop1] == ' ') //여백이 있는 경우
{
for (loop2 = loop1; loop2 <= strlen(m_StrBuf); loop2++) // 여백 뒤의 문자열을 한 자리씩 앞으로 당김
{
m_StrBuf[loop2] = m_StrBuf[loop2+1];
}
loop1--; //여백이 있었던 자리부터 다시 검사하기 위해서
}
}
return m_StrBuf; //여백이 제거된 문자열 리턴
}
// File::Write(char input)
// input : char
// output : 1
// Purpose : output 파일에 한 글자를 출력
int File::Write(char input)
{
m_fout.put (input);
return 1;
}
// File::Write(char* input)
// input : char
// output : 1
// Purpose : output 파일에 문자열을 출력
int File::WriteLine(char* input)
{
m_fout. write ( input , strlen(input) );
return 1;
}
PS. 척 봐도 이런 file I/O는 유니크 합니다. copy하면 바로 걸릴거란 뜻입니다. 참고만 하시기를.
'Exercise & Quizz > C++' 카테고리의 다른 글
Stack calculator #5 - Infix - Postfix translation using Stask structure (0) | 2008.08.21 |
---|---|
Stack calculator #4 - Infix - Postfix translation using Stask structure (0) | 2008.08.21 |
Stack calculator #2 - Infix - Postfix translation using Stask structure (0) | 2008.08.21 |
Stack calculator #1 - Infix - Postfix translation using Stask structure (0) | 2008.08.21 |
A mouse in the Maze : 미로찾기 (0) | 2008.08.21 |