2011-04-11 14 views
0

私は単純なファイルシステムをエミュレートするプログラムを持っているので、ディレクトリ構造を出力したいので<<演算子をオーバーロードして、慣性で自分の構造体を通過する別の関数を呼び出しました。それは動作しますが、出力のいくつかの行の前にいくつかの奇妙な16進値があります。 ostream私が操作する方法に何か問題はありますか? (クラス定義は含まれていませんでしたが、問題はありません)C++で奇妙な文字が表示される

ありがとうございました!

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); 
} 

答えて

5
os << printTree(os, x.m_Root,1); 

これは何ですか? printTreestd::ostream &を返し、出力しようとしています(ostream)?

このする必要があること:

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

+1グッドキャッチ:

意味
printTree(os, x.m_Root,1); 

、あなたのoperator<<は次のように実装する必要があります。 ostreamオブジェクト自体を出力します。 –

+1

オハイオ州..私の..ヘックス値は実際にメモリ内のオアストリームのアドレスであり、面白かったです。本当にありがとう! – Randalfien

関連する問題