Странные символы появляются в ostream в C ++ - PullRequest
0 голосов
/ 11 апреля 2011

У меня есть программа, которая должна эмулировать простую файловую систему, я хочу напечатать структуру каталогов, поэтому я перегрузил оператор << и вызвал другую функцию, которая проходит через мою структуру в рекурсии.Это работает, НО есть некоторые странные шестнадцатеричные значения перед некоторыми строками в выводе.Что-то не так с тем, как я манипулирую с 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 );
}

1 Ответ

5 голосов
/ 11 апреля 2011
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);
}
...