试图将ostream传递给函数并输出生成的ostream

时间:2014-03-19 15:08:39

标签: c++ function ostream

要求是创建一个流,将其传递给第二个函数进行修改(它必须以这种方式传递,因为输出需要访问单独类的私有数据成员)。然后输出修改后的流。它按原样编译但只返回MyStream的地址,我需要它来返回流。

/* Prints the details of the media collection. */
void MediaCollection::PrintMediaDetails() const{
    ostream MyStream(NULL);
    for(int i = 0; i < CurrentMCSize; i++){
        TheCollection[i]->PrintMedia(MyStream);
        cout << i + 1 <<" : "<<&MyStream;
    }
}

/*Takes Stream and and returns data members*/
void Media::PrintMedia(ostream & Out) const{
    Out<<Title<<" "<<Artist<<" "<<&RunningTime<<endl;
}

1 个答案:

答案 0 :(得分:0)

它正在打印MyStream的地址,因为你告诉它

更改

<<&MyStream;

<<MyStream;

然而,没有passing it a streambuf

,ostream MyStream(NULL)没有任何意义

cpp-progger建议使用std :: ostringstream。像这样定义一个

ostringstream MyStream;

并使用

打印内容
cout << i + 1 <<" : "<< MyStream.str();