论坛题目:
vector<string> files;
getFiles(filePath, files );
char
str[30];
int
size = files.size();
for
(
int
i = 0;i < size;i++)
{
cout<<files[i].c_str()<<endl;
string.c_str是Borland封装的String类中的一个函数,它返回当前字符串的首字符地址。c_str函数的返回值是const char*的,不能直接赋值给char*
}
void
getFiles( string path, vector<string>& files )
{
long
hFile = 0;
struct
_finddata_t
fileinfo; //文件属性的结构体
string p;
if
((hFile = _findfirst(p.assign(path).append(
"\\*"
).c_str(),&fileinfo)) != -1) //_findfirst _findnext _findclose都是操作文件的相关函数。
{ //assign() C++ string类的成员函数,用于拷贝、赋值操作,它们允许我们顺次地把一个string 对象的部分内容拷贝到另一个string 对象上
do
{
if
((fileinfo.attrib & _A_SUBDIR))
{
if
(
strcmp
(fileinfo.name,
"."
) != 0 &&
strcmp
(fileinfo.name,
".."
) != 0)
getFiles( p.assign(path).append(
"\\"
).append(fileinfo.name), files );
}
else
//非目录放到一块
{
files.push_back(p.assign(path).append(
"\\"
).append(fileinfo.name) );
}
}
while
(_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
}