我有一个应该模拟一个简单文件系统的程序,我想打印目录的结构,所以我重载了<<
运算符,并调用了另一个在rectursion中通过我的结构的函数。它工作正常,但在输出中的某些行之前有一些奇怪的十六进制值。我操纵ostream
的方式有什么问题吗? (我没有包括类定义,但它没关系)
谢谢大家,任何答案!
std::ostream& printTree(std::ostream& os, const CFileSystem::TDir* x, int nmbTabs)
{
int k;
const CFileSystem::TDir * nxt = x;
//cout << pocetTabu<<endl;
while(nxt){
os<<"--";
for(k=0;k<nmbTabs;k++){
os << '\t' ;
}
os<<"--";
os << nxt->m_Name << endl;
if(nxt->m_Sub){
os << printTree(os,nxt->m_Sub,nmbTabs+1);
}
nxt=nxt->m_Next;
}
return os;
}
std::ostream& operator <<(std::ostream& os, const CFileSystem& x)
{
os << "/" << endl;
os << printTree(os, x.m_Root,1);
return ( os );
}
答案 0 :(得分:5)
os << printTree(os, x.m_Root,1);
这是什么? printTree
会返回std::ostream &
,而您正在尝试输出(ostream)?
那应该是这样的:
printTree(os, x.m_Root,1);
这意味着,您的operator<<
应该实现为:
std::ostream& operator<<( std::ostream & os, const CFileSystem & x)
{
os << "/" << std::endl;
return printTree(os, x.m_Root,1);
}