题目描述
想遍历某个文件夹下制定文件,并且把文件名写入一个vector,但是实现的时候,这个vector的元素全部为最后一个文件的文件名,请问下这是什么原因?
相关代码
_finddata_t fileDir;
vector<const char*>xmlVec;
char* dir=".//*.xml";
long HANDLE;
HANDLE = _findfirst(dir,&fileDir);
if(HANDLE ==-1)
{
cout<"No file is found"<<endl;
return -1;
}
xmlVec.push_back(fileDir.name);
while( _findnext(HANDLE, &fileDir) == 0 )
xmlVec.push_back(fileDir.name);
_findclose(HANDLE);
因爲你容器
vector<const char*>xmlVec
存的是char
數組的指針,而不是值,因此指向的值永遠是fileDir.name
的值。建議使用string
類存儲fileDir.name
的值,容器也定義為vector<string>
。直接 push string。