0
간단한 파일 시스템을 에뮬레이션해야하는 프로그램이있어서 디렉토리의 구조를 인쇄하므로 <<
연산자가 오버플로되고 심바 스 내 구조를 통과하는 다른 함수가 호출되었습니다. 그것은 작동하지만, 일부 줄의 앞에 이상한 16 진수 값이 있습니다. ostream
을 조작하는 방식에 문제가 있습니까? (클래스 정의는 포함하지 않았지만 문제는 안됨)이상한 문자가 C++에서 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 좋은 캐치 :
의미, 당신의
operator<<
가로 구현되어야한다. ostream 객체 자체 출력하기. –오, 내 .. 그래서 16 진수 값은 실제로 메모리에있는 ostream의 주소였습니다. 흥미 롭습니다. 정말 고마워! – Randalfien