ostream 예제

오버로드된 연산자는 원래 ostream 개체에 대한 참조를 반환하므로 삽입을 결합할 수 있습니다. 스트림에서 지정된 변수로 값을 읽거나 변수를 스트림에 쓰는 정확한 방법을 많이 제어할 수 있습니다. 클래스에 대한 operator<<를 재정의하는 것이 적절하지 않은 경우(예: 인쇄할 수 있는 형식이 여러 개 있고 각 형식에 대해 다른 함수를 작성하려는 경우 연산자 체인개념을 포기하고 호출하기만 하면 됩니다.) 함수 또는 다른 생성자 매개 변수로 개체를 사용 하는 여러 클래스를 작성 합니다. 1) basic_ostream 개체를 생성하여 basic_ios::init(sb)를 호출하여 기본 클래스에 초기 값을 할당합니다. 첫째, 포인터가 아닌 참조로 ostream을 전달하지 않을 이유가 없습니다. 예를 들어, 유효한 정수를 사용자로부터 읽었는지 확인하려면 다음과 같은 매우 간단한 파일 쓰기 예가 있습니다: IO 스트림은 문자 스트림과 표준 데이터 형식 간의 관계를 정의할 뿐만 아니라 rela를 정의할 수 있습니다. 문자 스트림과 자신의 클래스 사이의 tionship. 또한 개체 지향 인터페이스를 사용하고 필요한 경우 문자 버퍼에서 직접 작업하는 스트림을 거의 무한히 자유롭게 조작할 수 있습니다. (물론 낮은 수준의 조작 중 일부는 정의되지 않을 수 있습니다. 예를 들어, 미래를 보기 위해 입력 스트림으로 앞으로 조사 할 수 없습니다!) std::ostream&operator<<(std:::ostream&os, TYPE)를 실제로 사용하지 않으려면<<연산자가 ostream 개체를 가져와 수정하고 반환할 수 있지만 반환 값 없이 반환할 수 있습니다. . 개체를 반환하는 값은 다음 명령문에서와 같이 작업을 연결할 수 있다는 것입니다 :p.

이 예제는 매우 간단해야 합니다. 여기서 유일한 두 가지 `새로운` 것들은 다음과 같습니다: 다른 하나는 C++와 비슷하게 MyPrint()를 적절한 std::ostream&operator<로 대체하는 것입니다. 이미 int에 대한 것이 있으므로 삽입 연산자 후 날짜 개체를 수락하려면 삽입 연산자에 오버로드하여 왼쪽의 ostream 개체와 오른쪽에 있는 날짜를 인식하도록 삽입 연산자에 오버로드합니다. 오버로드 된 << 연산자 함수는 Date 개체 내의 개인 데이터에 액세스할 수 있도록 클래스 날짜의 친구로 선언되어야 합니다. 운영자가 ostream을 수락하면 오스트림의 다른 하위 클래스를 선택하여 스트림에 기록된 데이터로 무엇이든 수행할 수 있습니다. 이 예제에서는 파일및 시스템 로그 콘솔/파일에 대한 쓰기를 보여 주며, 또한 압축하여 보관하고, 네트워크를 통해 보내고, 나중에 다른 프로그램으로 구문 분석하여 지정된 시간 간격의 로그 항목 수를 결정할 수도 있습니다. 기본적으로 ostream의 하위 클래스가 있는 모든 종류의 출력 작업에 클래스를 사용할 수 있습니다. IO 스트림 클래스 계층 구조는 매우 복잡하므로 이 시점에서 전체 계층 구조를 소개하는 대신 디자인의 개념을 설명하고 실행 중 스트림의 예제를 보여 드리겠습니다. 디자인 요소와 이러한 개념을 사용하여 소프트웨어에 대한 강력한 I/O 시스템을 설계하는 방법에 익숙해지면 계층 구조의 위치가 자연스럽게 무엇인지 이해해야 합니다. 예를 들어 문자열 스트림에서 문자열을 열고 부동 소수점 번호를 추출하여 일부 작업을 수행한 다음 스트림에 다시 넣을 수 있습니다. 그런 오스트림에 직접 작성해야하는 특별한 이유가 있습니까? 그렇지 않은 경우 MyPrint가 문자열을 반환합니다.

MyPrint 내부의 스트림을 사용하여 출력을 생성하려면 strstream을 사용하여 결과를 반환하면 됩니다.

Por
agosto 2, 2019