奇怪的字符出现在C++的ostream中

Ran*_*ien 0 c++ operator-overloading ostream

我有一个程序应该模拟一个简单的文件系统,我想打印目录的结构,所以我重载了<<运算符,并调用了另一个在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 );
}
Run Code Online (Sandbox Code Playgroud)

Naw*_*waz 5

os << printTree(os, x.m_Root,1);
Run Code Online (Sandbox Code Playgroud)

这是什么? printTree返回std::ostream &,你试图输出(ostream)?

那应该是这样的:

printTree(os, x.m_Root,1);
Run Code Online (Sandbox Code Playgroud)

这意味着,您operator<<应该实现为:

std::ostream& operator<<( std::ostream & os, const CFileSystem & x)
{
    os << "/" << std::endl;
    return printTree(os, x.m_Root,1);
}
Run Code Online (Sandbox Code Playgroud)