首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++文件输出的有关问题

2012-02-25 
C++文件输出的问题为了测试自己写的vector容器类,在执行插入,删除等操作后要输出结果,写了这样一个函数模

C++文件输出的问题
为了测试自己写的vector容器类,在执行插入,删除等操作后要输出结果,写了这样一个函数模板:
template <class   T>   void   outPutVectorMember(vector <T> &   vect){
if   (vect.size()> 0)
{
    for   (int   i=0;i <vect.size();i++){
    std::cout < <i < < ":   " < < ";
}
else
                  {
                        std::cout < < "vector   is   Null! " < < "\n ";
                  }
}
问题是,如果处理的都是简单类型的话就没问题,但如果类型是个结构体等复杂类型的话(例如   typedef   struct   _vectMem{int   a;char   ch;}vectMem),编译时vect.at(i)这条语句通不过。因为这时vect.at(i)得到的只是复杂类型的一个对象。
用C++,该怎么样去写一个能同时支持简单,复杂类型数据输出的函数呢。还有要写到文件里又该怎样写呢。谢谢各位高手指点一二。

[解决办法]
重载相应的
T为你自己定义的类型
ostream& operator < <(ostream& os, T& )
然后直接
copy(vect.begin(),vect.end(),ostream_iterator <T> (cout, " "));
[解决办法]
重载at函数好了
[解决办法]
那显然,你的T不可能是任意的。也就是说,你的T要求必须提供
class T
{
public:
friend ostream& operator < <(ostream& os, T& t);
};

[解决办法]
重载相应的
T为你自己定义的类型
ostream& operator < <(ostream& os, T& )
然后直接
copy(vect.begin(),vect.end(),ostream_iterator <T> (cout, " "));


必须的。
[解决办法]
恩,得重载操作符 " < < "
[解决办法]
vector里面的T类型一定要重载过 < <
\才行
除非是简单类型
friend ostream& operator < <(ostream& os, const T& t);

[解决办法]
重载操作符,hehe
[解决办法]
重载T的 < <自然是要
而且应该这样使用感觉比较好copy(vect.begin(),vect.end(),ostream_iterator <T> (cout, " "));


[解决办法]
重载操作符 " < < "

热点排行