«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

ITGenerations

[c++] Summary 입출력 시스템 요 본문

프로그래밍/c++ 명품프로그래밍

[c++] Summary 입출력 시스템 요

ITGenerations 2018. 1. 4. 08:08

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);