CFileFind类与CString类详述

1、 CFileFind

MFCCFilefind执行本地文件查找,是CGopherFileFindCFtpFileFind的基类;后两个类用于Internet文件查找。CFileFind包括的成员函数有开始查找、定位文件、返回标题名或路径;对于Internet查找来说,GetFileURL返回文件的URL

CFileFind是为另两类查找特殊服务器设计的MFC类的基类,CGopherFileFindGopher服务器上工作,CFtpFileFindFTP服务器上工作,这些类为用户查找文件提供了一种无缝机制,与服务器协议、文件类型、地点、本地机器或远程服务器无关。

属性:

GetLength获取找到文件的长度,以字节为单位;

GetFileName获取找到文件的名字;

GetFilePath找到文件的全路径;

GetFileTitle获取找到文件的标题,标题不包括扩展内容;

GetFileURL获取找到文件的URL,包括文件路径;

GetRoot获取找到文件根目录;

GetCreationTime获取文件创建时间;

GetLastAccessTime获取文件最后一次打开的时间;

GetLastWriteTime文件最后改变和存储的时间;

MatchesMask指定要找的文件的属性;

IsDots查看文件名是否是包含"."或"..",以表明它的确是一个目录;

IsReadOnly文件是否是只读;

IsDirectory文件是否是目录;

IsCompressed文件是否是压缩;

IsSystem文件是否是系统文件;

IsHidden文件是否是隐藏;

IsTemporary文件是否是临时的;

IsNormal文件是否是常规的(无其它属性);

IsArchived文件是否是档案。

操作:

Close关闭查找请求;

FindFile查找一个目录中的指定文件;

FindNextFile从FindFile以前调用开始继续下一查找。

2、 CString

CString是一种很有用的数据类型,很大程度上简化了MFC中的许多操作,CString位于头文件afx.h中。

(1) CString对象的连接变得很方便,代码如下:

CString gray("Gray");   

CString cat("Cat");   

CString graycat = gray + cat; //then graycat="GrayCat"

要比下面的用法方便得多:

char gray[] = "Gray";   

char cat[] = "Cat";   

char * graycat = malloc(strlen(gray) + strlen(cat) + 1);   

strcpy(graycat, gray);   

strcat(graycat, cat);

(2) 格式化字符串

格式化字符串使用CString对象的Format()方法,不必担心用来存放格式化后数据的缓冲区是否足够大,这些工作由CString类来完成。格式化是一种把其它不是字符串类型的数据转换成CString类型的常用技巧,如把一个整数转换为CString类型,代码如下:

CString s;

s.Format(_T(“%d”),total);

(3) CString型和char*类型的相互转化

语句“CString graycat = “Gray”+”Cat”;”是错误的。这是因为“+”运算符被定义为一个重载操作符,而不是两个LPCTSTR数据类型,它是底层数据类型。我们不能对基本数据类型(intcharchar*)重载C++的运算符,正确语句如下:

CString graycat = CString(“Gray”) + CString(“Cat”);

或者 CString graycat = CString(“Gary”) + “Cat”; 

研究表明:“+”总是使用在至少有一个CString对象和一个LPCTSTR的场合。

如何将char*转化为CString型?

CString s = "This is a test"; // 8-bit only   

CString s = _T("This is a test"); // Unicode-aware   

CString s("This is a test"); // 8-bit only   

CString s(_T("This is a test")); // Unicode-aware  

char * p = "a test"; //TCHAR * p = _T("a test") 或者LPTSTR p = _T("a test"); 

CString s = p; //或者CString s(p);

CString转换为char*的三种方法:

a、 强制类型转换为LPCTSTRCString s(“GrayCat”); LPCTSTR p = s;

b、 使用CString对象的GetBuffer方法:

我们可以使用GetBuffer修改CString中的内容,它的作用是返回一个可写的缓冲指针。下述代码可实现修改字符或截短字符串。

CString s(_T("File.ext"));   

LPTSTR p = s.GetBuffer();   

LPTSTR dot = strchr(p, .);  //strchr(char* s,char c)的功能是查找字符串s中首次出现字符c的位置

if(p != NULL)   

       *p = _T(\0);   

s.ReleaseBuffer();   

这是 GetBuffer 的第一种用法,也是最简单的一种,不用给它传递参数,它使用默认值 0,意思是:"给我这个字符串的指针,我保证不加长它"。当你调用 ReleaseBuffer 时,字符串的实际长度会被重新计算,然后存入 CString 对象中。

必须强调一点,在 GetBuffer 和 ReleaseBuffer 之间这个范围,一定不能使用你要操作的这个缓冲的 CString 对象的任何方法。因为 ReleaseBuffer 被调用之前,该 CString 对象的完整性得不到保障。

LPTSTR p = s.GetBuffer(1024); 调用此函数后,不仅获得了字符串缓冲区的指针,而且同时获得了长度至少为1024个字符的空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值