ITGenerations
[c++] Summary 입출력 시스템 요 본문
C++ 입출력의 기초
*입출력 스트림은 연속적인 데이터의 흐름 혹은 데이터를 전송하는 소프트웨어 모듈이다.
*입력 스트림은 입력 장치와 프로그램을 연결하며 입력 장치로부터 데이터를 입력받아 프로그램에
순차적으로 전달한다. 출력 스트림은 프로그램과 출력 장치를 연결하며 프로그램에서 출력한 데이터가
순차적으로 출력 장치로 보내지도록 한다.
*C++스트림은 버퍼가 있어 모든 데이터는 버퍼를 거쳐 입출력된다.
*C++표준 입출력 시스템은 스트림 입출력만 지원한다.
*구 표준 C++ 입출력 라이브러리의 주요한 클래스는 ios, istream, ostream, iostream 등이 있었으며
이들은 문자가 한 바이트로만 구성되는 언어만 지원하였다.
*한 문자가 2바이트 이상으로 구서오디는 다국어의 입출력을 위해 2003년 새 C++ 표준에서는 basic_ios,
basic_istrema, basic_ostream, basic_iostream 등 템플릿 클래스를 제공한다.
ostream 멤버함수로 문자 출력
*<<연산자 외 put( ), write( ), flush( ) 등 ostream의 멤버 함수로 문자를 출력할 수 있다.
istream 멤버 함수로 문자 입력
*>> 연산자와 get( ), get(char&)등 istream의 멤버 함수로 문자를 읽을 수 있다.
*get(char* str, int len, char delim='\n')이나 getline(char* str, int len, char delim='\n')을 사용하면
한 줄의 문자열을 읽을 수 있다.
*getline( )은 한 줄을 읽은 후 delim 문자를 스트림 버퍼에서 제거하지만, get( )은 delim 문자를 그대로
남겨두므로 get( )을 연속적으로 사용하여 여러 줄을 읽을 때 버퍼에 남겨진 delim 문자를 제거하지 않으면
무한 루프에 빠질 수 있다.
포맷 입출력
*포맷 입출력은 포맷 플래그를 설정하거나, 포맷 함수를 호출하거나, 조작자를 이요하면 된다.
*조작자는 매개 변수 없는 조작자와 매개 변수를 하나 가진 조작자로 구분되며,
endl, dec, hex, left, right, skipws, boolalpha, setfill, setw 등이 있다.
삽입 연산자와 추출 연산자
*삽입 연산자(<<)는 스트림에 데이터를 출력하기 위해 ostream 클래스에 작성된 연산자이다.
*추출 연산자(>>)는 스트림으로부터 데이터를 입력받기 위해 istream 클래스에 작성된 연산자이다.
*사용자는 자신이 작성한 클래스의 객체를 출력하거나 입력받기 위해, 삽입 연산자(<<), 추출 연산자(>>)를
따로 작성할 수 있다. 사용자가 작성한 클래스가 UserClass라고 할 때 이 두 연산자 함수의 원형은 다음과 같다.
ostream& operator << (ostream& outs, UserClass obj); istream& operator >> (istream& ins, UserClass obj); |
사용자 조작자 만들기
*사용자는 새로운 조작자를 만들 수 있다. 조작자 함수 원형은 다음과 같다.
ostream& manipulatorFunction (ostream& outs); istream& manipulatiorFunction (istream& ins); |
'프로그래밍 > c++ 명품프로그래밍 ' 카테고리의 다른 글
[c++] summary 예외처리와 C언어와의 링크 지정 (0) | 2018.01.06 |
---|---|
[c++]파일입출력 summary (0) | 2018.01.06 |
[c++] 매개 변수 없는 조작자 (0) | 2018.01.04 |
[c++] summary of 가상함수와 추상클래스 (0) | 2018.01.03 |
[c++] 추상클래스, 순수가상함수 (0) | 2018.01.03 |