노력과 삽질 퇴적물

CPP: 파일처리 본문

프로그래밍note/언어. C&C++ 계열

CPP: 파일처리

알 수 없는 사용자 2011. 8. 2. 23:36
1. 스트림
=> 좌인우출(?) = 좌측에서 흘러 들어가고, 우측에서 흘러 나간다.
cin >> ... >> endl;
cout  << ... << endl;





2. 파일처리
① 연다
② 처리한다(읽거나 쓰기)
③ 닫는다.


텍스트 파일(text file) 바이너리 파일(binary file)
쓰기
(W = 파일쓰기용 객체명 가칭)
ofstream W ("텍스트파일.확장자");

W << "입력될_문자열";

W.close(); 
ofstream W ("이진파일.확장자",
                   ios::out  |  ios::binary);

R.read(버퍼명, 버퍼크기);
W.write(버퍼명, R.gcount);

W.close(); 
읽기
(R = 파일쓰기용 객체명 가칭) 
ifstream R ("텍스트파일.확장자");

char read_c
R.get(read_c);

R.close(); 
ifstream R ("이진파일.확장자",
                  ios::in  |  ios::binary);

R.read(버퍼명, 버퍼크기);

R.close(); 





3. 예외처리
반환형 function(...)
{
     if (...에러검사...)
          throw 예외시_처리값;

     return ...;
}



int main(...)
{
     ...

     try
     {
          function(...);
     }
     catch(자료형 인수1)
     {
          ...
     }
     ...
     catch(자료형 인수N)
     {
          ...
     } //catch문을 여러개 해서 다양한 에러처리를 가능하게 한다.




     return 0;




4. 파일분할법
user_header.h
함수원형선언 
user_functiontion.cpp
함수정의 
main.cpp
함수사용 
void function_1(...);
...;
void function_n(...);
#include "user_header.h"

void function_1(...)
{
     ......
}
...
void function_n(...)
{
     ......
}
#inlcude <iostream>
#include "user_header.h"

int main()
{
     function_1(...);
     ...;
     function_n(...);

     return 0;
}
↓↓↓
//실제로 동작되는 코드

#inlcude <iostream>

void function_1(...);
...
void function_n(...);



int main()
{
     function_1(...);
     ...;
     function_n(...);

     return 0;
}



void function_1(...)
{
     ...;
}
...
void function_n(...)
{
     ...;
}





5. 이름공간
=> 파일분할법으로 작성해둔 파일을 include시킬때, 동명변수때문에 충돌가능성 有!!!
=> new_space명은 1개만 만들수 있다.
① Scope 해결 연산자[::] 사용법
using  namespace std;
namespace  new_space명
{
     ...이름공간_멤버변수...;
     ...이름공간_멤버함수()...;
}

...

new_space명 :: 이름공간_멤버변수;
new_space명 :: 이름공간_멤버함수(); 


② using 사용법1
using  namespace std;
namespace  new_space명
{
     ...이름공간_멤버변수...;
     ...이름공간_멤버함수()...;
}

...

using  new_space명 :: 이름공간_멤버변수;
using  new_space명 :: 이름공간_멤버함수;
=> 일부 이름만 접근 및 참조가능.


③ using 사용법2
using  namespace std;
namespace  new_space명
{
     ...이름공간_멤버변수...;
     ...이름공간_멤버함수()...;
}

...

using  namespace  new_space명;
=> 이름공간내 모든 이름을 접근가능.


④ 이름없는 이름공간
#include <iostream.h>

int main()
{
     cout << "C++" << endl;

     return 0;
}
#include <iostream>

int main()
{
     std::cout << "C++" <<  std::endl;

     return 0;
}
#include <iostream>
using namespace std;


int main()
{
     cout << "C++" << endl;

     return 0;
}

namespace //new_space명이 생략.
{
     ...이름공간_멤버변수...;
     ...이름공간_멤버함수()...;

'프로그래밍note > 언어. C&C++ 계열' 카테고리의 다른 글

API 관련 기본 매크로  (0) 2011.12.14
CPP: 문자열  (0) 2011.10.12
CPP: 함수관련 편리한(?) 예약어  (0) 2011.08.02
가상함수 & 추상클래스  (0) 2011.07.26
OOP: 상속(or 계승)  (0) 2011.07.25