더북(TheBook)

1.4.3 스트림 반복자

스트림 반복자를 사용하면 스트림과 소스 또는 스트림과 타깃 사이에 데이터를 텍스트 모드로 전송할 수 있다. STL 알고리즘은 반복자 두 개로 지정한 범위를 입력으로 받기 때문에 입력 스트림 반복자로 접근할 수 있는 소스에서 이용할 수 있는 객체라면 어떤 객체든 알고리즘을 적용할 수 있다. 즉, 알고리즘은 스트림에서 가져온 객체에도 적용할 수 있고, 컨테이너에서 가져온 객체에도 적용할 수 있다. 나중에 반복자를 받을 수 있게 작성하는 법을 설명하겠다. 표준 반복자들은 iterator 템플릿 타입을 기반 클래스로 갖고 있다.

스트림 객체에서 지정된 타입의 데이터로 동작하는 스트림 반복자 객체를 생성할 수 있다. 즉, 데이터 타입이 반복자 템플릿 타입 매개변수가 되고, 스트림 객체는 생성자 인수가 된다. istream_iterator<T>istream에서 타입 T의 객체들을 읽을 수 있는 입력 반복자이며, istream은 파일 스트림이나 표준 입력 스트림 cin이 될 수 있다. 객체는 >> 연산자로 읽게 되며, 읽게 되는 객체의 타입은 반드시 >> 연산자를 지원해야 한다. istream_iterator<T>의 인수 없는 생성자는 스트림의 끝에 도달하면 일치하게 되는 end 반복자 객체를 생성한다. 다양한 타입으로 구성된 데이터를 전송할 때 스트림 반복자가 유일한 방법은 아니다. 기본적으로 istream_iterator 객체는 공백을 무시한다. 이런 경우 입력 스트림에 std::noskipws 조작자를 적용해서 기본 동작을 덮어쓸 수 있다. istream_iterator는 한 번만 쓸 수 있다. 스트림에서 가져온 입력 객체를 다시 쓰고 싶다면 istream_iterator 객체를 새로 만들어야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.