我使用ATL开发一个组件,没有使用MFC的支持,这个组件需要从文本文件里面读取数据,在C++中可以使用流类 ifstream,但是在ATL工程中间为什么不行啊?编译的时候会报错:
error C2872: 'ifstream' : ambiguous symbol
我已经把fstream.h, iostream.h都包括进去了,是不是在ATL中不能使用这个类,还有什么办法从文件中读取数据?我这个工程没有使用MFC支持啊,不会要我用C的文件处理吧?
各位大侠,帮忙看看

解决方案 »

  1.   

    不用标准库,用了会增大组件的体积。ATL有内置的文件包装类,那用得着动用C的文件处理函数。
      

  2.   

    CAtlFile file;

    char *buffer=new char[(DWORD)pFile->GetFileSize()+1];
    HRESULT hr=file.Create(_T("C:\test.txt"),GENERIC_READ, FILE_SHARE_READ,
    OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN );
    if(FAILED(hr))
    {
    delete[] buffer;
    return FALSE;
    }DWORD Bsize,old=(DWORD)pFile->GetFileSize();
    hr=file.Read(buffer,old,Bsize);
    if(FAILED(hr)){
    delete[] buffer;
    return FALSE
    }buffer[Bsize]=0;// buffer 存储文件内容delete[] buffer;
      

  3.   

    楼上,我怎么没发现在ATL里还有CAtlFile这个包装类?
    好像ATL里没有这样一个类吧!!
    我建议楼主自己用API封装一个.
      

  4.   

    楼上仔细找找, 俺用了这么长时间,莫非我用的 ATL 是微软特别版?
      

  5.   

    即然用了com,就该用IPersistStreamInit,IStream