std ostream 예제

이러한 헤더에 선언 되 고 콘솔 I/O에 대 한 일관 된 인터페이스를 제공 합니다. 스트림에서 지정된 변수로 값을 읽거나 변수를 스트림에 쓰는 정확한 방법을 많이 제어할 수 있습니다. 읽기 결과를 테스트하여 특정 읽기 또는 쓰기 작업이 실패한 것을 감지할 수 있습니다. 예를 들어 유효한 정수의 사용자가 읽혀지는지 확인하려면 다음을 std::ostream::put에 대한 선언입니다. 이 예제는 매우 간단해야 합니다. 여기서 유일한 두 가지 `새로운` 것 들은: <<연산자는 ostream 개체를 받아 수정 하 고 반환, 비록 그것은 ostream 개체를 가지고 반환 값 없이 수정 충분 했다. 개체를 반환하는 값은 다음 문에서와 같이 작업을 체인할 수 있다는 것입니다. 을 사용하여 문자 스트림과 사용자 고유의 클래스 간의 관계를 정의합니다. 또한 개체 지향 인터페이스를 사용하고 필요한 경우 문자 버퍼에서 직접 작업하는 스트림을 거의 무한히 자유롭게 조작할 수 있습니다.

(물론 낮은 수준의 조작 중 일부는 정의되지 않을 수 있습니다. 예를 들어, 미래를 보기 위해 입력 스트림으로 앞으로 조사 할 수 없습니다!) 운영자가 ostream을 수락하면 오스트림의 다른 하위 클래스를 선택하여 스트림에 기록된 데이터로 무엇이든 수행할 수 있습니다. 이 예제에서는 파일및 시스템 로그 콘솔/파일에 대한 쓰기를 보여 주며, 또한 압축하여 보관하고, 네트워크를 통해 보내고, 나중에 다른 프로그램으로 구문 분석하여 지정된 시간 간격의 로그 항목 수를 결정할 수도 있습니다. 기본적으로 ostream의 하위 클래스가 있는 모든 종류의 출력 작업에 클래스를 사용할 수 있습니다. 다음은 이러한 버퍼로 파일을 효율적으로 복사하는 매우 간단한 예입니다 (고맙게도 매우 복잡한 조작은 여기에 관여하지 않습니다!). IO 스트림 클래스 계층 구조는 매우 복잡하므로 이 시점에서 전체 계층 구조를 소개하는 대신 디자인의 개념을 설명하고 실행 중 스트림의 예제를 보여 드리겠습니다. 디자인 요소와 이러한 개념을 사용하여 소프트웨어에 대한 강력한 I/O 시스템을 설계하는 방법에 익숙해지면 계층 구조의 위치가 자연스럽게 무엇인지 이해해야 합니다. 예를 들어 문자열 스트림에서 문자열을 열고 부동 소수점 번호를 추출하여 일부 작업을 수행한 다음 스트림에 다시 넣을 수 있습니다.

다음은 몇 가지 중요한 스트림 기능을 활용하는 명령줄 인수에서 로그 파일 항목을 작성하도록 설계된 유틸리티의 간단한 예입니다. 당신이 뭔가를 이해하지 못하는 경우, 해당 특정 주제에 대한 자습서를 참조하십시오. 1) basic_ostream 개체를 생성하여 basic_ios::init(sb)를 호출하여 기본 클래스에 초기 값을 할당합니다. 내부 작업이 예외를 throw하면 잡히고 badbit이 설정됩니다. badbit에 대해 예외()가 설정된 경우 예외가 다시 throw됩니다. 파일 I/O는 헤더에서 ifstream, ofstream 또는 fstream 클래스의 개체를 수동으로 선언한 다음 스트림의 열린 메서드와 파일 이름을 인수로 사용하여 스트림과 파일을 연결하여 수행됩니다. 파일 I/O는 콘솔, 장치, 디스크 파일, 가상 메모리, 실행 중인 프로세스 목록 및 블랙홀 `/dev/null`과 같은 다양한 미디어를 나타내는 데 자주 사용되기 때문에 특히 중요합니다.