1) Does GetNext() return a CString ? Maybe the streams do not understand how
to output a CString and it is using the void* conversion (basically, printing
out the address of the object). Try casting to LPCTSTR

Code:
sourcefile<< (LPCTSTR)parList.GetNext(Pos1)<< '\n';

2) Depending an compiler options, you might need to change to
wifstream (also why istream types if outputing ?).


3) If GetNext() does return a CString, it would make more sense to use the
CStdioFile class which can directly read/write Cstring objects.