描述:
我使用ATL开发一个组件,没有使用MFC的支持,这个组件需要从文本文件里面读取数据,在C++中可以使用流类 ifstream,但是在ATL工程中间为什么不行啊?编译的时候会报错:
error C2872: 'ifstream' : ambiguous symbol
我已经把fstream.h, iostream.h都包括进去了,是不是在ATL中不能使用这个类,还有什么办法从文件中读取数据?我这个工程没有使用MFC支持啊,不会要我用C的文件处理吧?
各位大侠,帮忙看看
解决方案1:
即然用了com,就该用IPersistStreamInit,IStream
解决方案2: 楼上,我怎么没发现在ATL里还有CAtlFile这个包装类?
好像ATL里没有这样一个类吧!!
我建议楼主自己用API封装一个.
楼上仔细找找, 俺用了这么长时间,莫非我用的 ATL 是微软特别版?
解决方案4: 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;
不用标准库,用了会增大组件的体积。ATL有内置的文件包装类,那用得着动用C的文件处理函数。
解决方案6:注意名字空间的使用
您可能想查找下面的文章:
- 在ATL工程中怎么写文件?用fprintf老是报错!!!
- 请教:ATL工程中定时器的使用
- 我在一个ATL工程中使用_bstr_t还要加#include<atlctlh>头文件吗,不加说bstr_t没定义,加了出现2个连接错误
- 我希望创建一个类似于MFC工程一样的有窗口的ATL工程,但是用默认的ATLwizard创建的却是无窗口的控件,那我该怎么办呢?
- 把某个ATL工程的功能移植到MFC的工程里怎么就那么难?
- ATL工程中两个类之间参数怎么调用
- ATL工程中一个支持连接点的接口实现类中能够增加多个入接口,出接口?
- ATL工程中使用MFC类的问题
- 在vs2005中建一个atl工程,为什么会出现二个同名工程,第二个是第一个名称后加ps
- 做一个ATL的EXE工程,为什么编译的时候会运行一次?