본문 바로가기

C++

C++ 입출력시스템 정리

C++의 입출력 시스템

  • 표준C++에서는 stream 입출력만을 다룬다(input/output)
  • 버퍼를 갖는다
  • 구 표준과 새 표준(2003)
    • 템플릿을 사용하여 재작성되었다.
    • 다국어 수용을 가능하게 하였다
    • 구 표준:
      ios, istream, ostream, iostream, ifstream, ofstream, fstream
    • 신 표준:
      basic_ios, basic_istream, basic_ostream, basic_iostream, basic_ifstream, basic_ofstream, basic_fstream
    • 단, 구 표준을 수용할 수 있게 typedef 해 놓았음
    • 2바이트 문자 입출력(한글)은 <부록 2> 참조

ostream

  • ostream& put(char c)
  • ostream& write(char *str, int n)
  • ostream& flush()
  • cout.put(‘a’)
    char str[] = “I love programming”;
    cout.write(str, 6); // 6개의 문자를 출력
    cout.flush();

istream

  • int get()
  • istream& get(char& ch)
  • istream& get(char *s, int n)
    • 입력도중 <Enter>키를 만나면 읽기를 중단하고 리턴
      따라서 ‘\n’이 입력스트림 버퍼에 남아있다.
      그래서 다시 읽을 때는,
      cin.get(); 혹은 cin.ignore(1) 하여 ‘\n’을 제거해야 한다
  • 한줄읽기
    istream& get(char* s, int n, char delim=‘\n’);
    istream& getline(char* s, int n, char delim=‘\n’);
    • ‘\n’을 만나거나 n-1 문자를 읽을 때 까지 한 라인을 읽음
    • getline()은 ‘\n’을 제거해 줌. 선호함
  • istream& ignore(int n=1, int delim=EOF)
  • int gcount() // 읽은 문자 개수 알기

포맷 입출력

  • 3가지 방법의 포맷 입출력
    포맷 플래그/포맷 함수/조작자
  • 포맷 플래그
    • 32개의 포맷 플래그 <xiobase>
      Iso::skipws, unitbuf, upperclass, showbase, left, right, dec, oct, hex, scientific, fixed, boolalpha
    • setf(Long flags)   | 를 사용하여 여러 플래그 세팅 가능
    • unsetf(Long flags)
  • 포맷 함수
    • cout.width()
    • cout.fill(‘^’)
    • cout.precision(5)
  • 조작자(manipulator)
    • cout << hex << showbase << 30 << endl;
    • endl 은 조작자임
    • 매개변수 없는 조작자
      endl, oct, dec, hex, left, right, fixed, scientific, flush, showbase, noshowbase, showpoint, noshowpoint, showpos, skipws, noskipws, boolalpha
    • 매개변수를 갖는 조작자
      <iomanip> 에 정의
      resetioflags(long flags), setbase(int base), setfill(char c), setioflags(long flags), setprecision(int np), setw(int n)

 

 

beeeye dmu

 

'C++' 카테고리의 다른 글

C++ 예외처리 try~throw~catch  (0) 2016.07.07
파일입출력, 파일에서 원하는 단어를 검색하는 프로그램(find)  (0) 2016.07.06
STL vector와 sort  (0) 2016.07.05
STL vector의 사용법  (0) 2016.07.04
enum 과 연산자 중복의 예  (0) 2016.07.04