2016-09-12 2 views
-1

ostream을 사용자 정의 문자열 클래스와 함께 사용하고 연산자를 오버로드하려고합니다. < < 버퍼로 스트리밍 한 다음 원하는 위치로 플러시 할 수 있습니다 (내 경우 그냥 창문에 인쇄 될)<< 연산자로 내 자신의 String 클래스를 사용합니다

나는 내부적으로 iostream 's에 익숙하지 만 나의 이해에서 std :: stringbuf를 만드는 방법은 내 custom stringstream의 기본이 아니다. stringbuf가 std :: string을 처리하기 때문에 작동합니다. 본질적으로

내가이 일을 할 수 (또는 유사)에 원하는 : MyOutput가 인쇄 변경 될 수 있습니다

MyStringClass string 
MyOutput << "hello" << string << "World" << std::endl; 

어디서든 내가 원하는.

감사합니다.

답변

0

문제 없습니다. 클래스를 정의하고 그 정의 내에 ostream& operator<<(const String&);을 추가하십시오.

그 연산자 안에 원하는 처리 방법을 코드 할 수 있습니다 (영감을 얻기 위해 std :: string 살펴보기)

+0

간단합니까? 하지만 내 문자열이 출력되는 ostream은 std :: strings를 다루지 않습니까? 아니면 간단히 무시하고 연산자 정의 내에서 '인쇄'를 수행합니까? 감사합니다 –

+0

'ostream'은'cout'의 타입입니다; std :: string과 아무 관련이 없습니다. 내 선언문을 사용하면'cout << yourstring'을 사용할 수 있지만, 당신은 cout을 사용할 필요가 없습니다. 원하는 목적지를 사용하십시오. – Aganju

+0

@LukeBourne'<<'함수 안에는 이미 출력 메소드가 정의되어있는'std :: string'과 같은 다른 타입을 출력해야합니다. – Barmar

관련 문제