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 |