문제

ostringstream 클래스를 확장하는 클래스가 있습니다.

Class A: public ostringstream
{

}

해당 개체에서 지정된 크기와 특정 오프셋의 데이터를 읽고 싶습니다.그래서 노력하고 있습니다:

A a_;
a_ << data1 << data2;
string datax(a_[offset], size);

그러나 문자열 datax 문에서 컴파일 오류가 발생합니다.

error: no match for operator[] in ... 

지정된 오프셋과 크기에 대해 객체 a_에서 데이터를 어떻게 복사할 수 있나요?나는 a_ 객체에서 데이터를 제거하고 싶지 않습니다.

메모:다른 사람이 디자인한 클래스이므로 수정할 수 없습니다.

도움이 되었습니까?

해결책

나는 당신이 할 수있는 코드를 믿습니다 :

a_ << data1 << data2;
string datax(&a_.str()[offset], size);
.

조금은 나에게 조금만 보입니다.대신 일반 std::stringstream 만 사용하지 않는 이유는 무엇입니까?(std::ostringstream에서 상속 받을만한 이유가없는 한).

다른 팁

우선, 표준의 어느 것도 다음에서 파생된다는 것을 보장하지 않습니다. std::ostringstream 작동합니다.아예 하지 않는 것이 낫습니다.

둘째, 없다 operator [] ~을 위한 std::ostringstream 그렇다면 왜 하나가 있어야합니까? A?

마지막으로 전화할 수 있습니다. str() ~에 a_ 그리고 얻을 std::string 버퍼의 내용으로.그것이 당신에게 도움이 될지 잘 모르겠습니다. 당신이 원하는 것이 완전히 명확하지 않습니다.

str () 메서드를 호출해야합니다.

ostringstream oss (ostringstream::out);
oss << "abcdef";
string s = oss.str();
cout << s.substr(1, 3) << endl;
.

이 예제는 "BCD"를 출력합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top