2014-09-03 1 views
8

내 책에 : 스트림이 장치에서 읽거나 쓰는 문자 시퀀스 인 경우 내 책에 : istreamostream 유형이 입력 및 출력 스트림을 나타냅니다 (의미는 무엇입니까?) coutcin은 어떻게 작동합니까? ?스트림이란 무엇입니까?

저는 원래 언어가 아니며 제 책에서 말하는대로 이해할 수 없습니다. 출력 연산자가 주어진 값인 ostream에 주어진 값을 씁니다.

+1

증기는 양방향 또는 단일 방향 일 수 있습니다. 그게 모두 –

+0

스트림 클래스의 좋은 개요를 여기에서 얻을 : http://www.cplusplus.com/reference/iolibrary/ – BeyelerStudios

답변

3

간단한 흐름으로 입력 흐름 및 출력 흐름이 될 수있는 데이터 흐름으로 정의 할 수 있습니다. 따라서 프로그램에서 파일로 또는 그 반대로 데이터 흐름으로 생각할 수 있습니다. 아래 이미지는 당신이 더 잘 이해하는 데 도움이 될 수

enter image description here

enter image description here

MSDN에서 스트림은 iostream 클래스의 중심 개념이다. 은 스트림 객체를 소스로 사용되는 스마트 파일로 생각하고 바이트에 대해 대상으로 생각할 수 있습니다. 스트림의 특성은 클래스와 사용자 정의 된 삽입 및 추출 연산자에 의해 결정됩니다. 예를 들어, 입력 스트림에 대한 데이터가 정확하게 일단을 생성됩니다

8

는 "스트림"의 은유 뒤에 기본적인 아이디어는 제공 또는 싱글 패스 (single-pass) 방식으로 데이터를 소비한다는 것입니다. 스트림에 더 많은 데이터가 있는지 물어볼 수 있으며 스트림에서 데이터를 제공하면 다시 동일한 데이터를 다시 제공하지 않습니다.

스트림을 통해 의미있는 작업을 수행하기 위해 일반적으로 버퍼 (원하는 경우 스트림 버퍼)을 종류 (보통 작은 크기)를 저장하는 스트림에 연결하고자합니다. 메모리에서 랜덤 액세스, 검사 및 처리 가능한 조각으로 스트림에서 추출 된 데이터의 양. (출력 스트림에 대해 비슷한, 반대의 아이디어가 있습니다.)

때때로 버퍼링없이 스트림을 처리하는 것이 좋습니다. 예를 들어 입력 스트림과 출력 스트림이 있고 입력에서 정수를 읽고 각 정수의 배가 값을 출력에 쓰면 버퍼링없이 할 수 있습니다.

그래서 범위의 데이터는입니다. 스트림은 한 번만 트래버스하고 다시는 통과 할 수없는 것들입니다. 앞으로 진행한다는 측면에서 생각해 보면 스트림에는 블록과 같은 또 다른 속성이 있습니다. 데이터가 없을 때 입력 스트림이 차단 될 수 있고 더 이상 데이터를 받아 들일 수없는 경우 출력 스트림이 차단 될 수 있습니다 . 이렇게하면 프로그램 논리에서 입력 스트림 은 항상에 도달 할 때까지 데이터가 포함되지만 프로그램에 의존하는 프로그램은 무제한의 임의의 벽시계 시간 동안 실행될 수 있다고 상상할 수 있습니다.

+0

CRT (또는 현대 등가물 (lol)를 통해 표시되는 터미널 역사가)는이 컨텍스트의 버퍼입니다. –

1

언어 관점에서 볼 때 스트림은 특정 스트림 형 인터페이스가있는 개체 일뿐입니다.이 인터페이스를 사용하면 입력 스트림에서 데이터를 추출하거나 데이터를 출력 스트림 (출력 스트림)에 푸시 할 수 있습니다. 입력 스트림은 제공하는 데이터에 무작위 액세스 (무엇이든간에)를 허용하지 않습니다.

이것은 순수하게 클래스에 대한 인터페이스 설명입니다. 스트림이 푸시 된 데이터를 통해 /에서 데이터를 가져 오는 위치는 스트림에 달려 있습니다. 스트림은 데이터를 수신/전송하기위한 추상화입니다.

스트림의 구체적인 구현은 터미널 응용 프로그램에서 데이터를 읽고 프로그램 (cin)에 표시 할 수 있으며, 다른 하나는 프로그램 요청 (cout)으로 문자를 터미널 응용 프로그램에 반환 할 수 있으며, 네 번째는 메모리 버퍼 (stringstream)에서 데이터를 읽고 쓰고, 다섯 번째는 난수 생성기에서 데이터를 "읽습니다"등의 방식으로 데이터를 읽고 쓸 수 있습니다 (fstream). 생성 된 스트림 인터페이스의 다양한 구현이 그렇듯이 많은 가능성이 있습니다.

이것은 스트림의 추상화의 아름다움입니다. 코드 조각이 통신 할 수있는 매우 유연한 방법입니다. 프로세스는 데이터의 읽기/쓰기가 가능하다는 것 이외에 데이터의 소스/대상에 대해 알 필요가 없습니다.