基本上,我要做的是检查文件的最后访问时间并将其与字符串进行比较。这是相关的块:
struct stat file;
char timeStr[ 100 ];
stat(nodes.at(0), &file);
strftime(timeStr, 100, "%H:%M:%S-%m/%d/%y", localtime(&file.st_atime)); /* problem */
nodes
是文件路径的向量;我不确定它是否相关但我会包含我用来设置nodes
的代码:
vector<char*> nodes;
DIR *dir;
struct dirent *cur
if((dir = opendir(searchPath.c_str())) == NULL) {
cout << "Error opening search path. Are you sure '"
<< searchPath.c_str() << "' is a valid search path?" << endl;
return 0;
}
while((cur = readdir(dir)) != NULL) {
if(string(cur->d_name) == "." || string(cur->d_name) == "..") continue;
nodes.push_back(cur->d_name);
}
closedir(dir);
其中searchPath
是用户输入的字符串。
问题:当'问题'行被运行时,从nodes
开始就是垃圾的向量。我想知道如果不将nodes
变成垃圾就能完成这项任务。
由于这是家庭作业,并且你可能会说我不习惯C ++,所以在正确方向上的坚实推动将被赋予'接受'。
谢谢。
答案 0 :(得分:1)
nodes.push_back(cur->d_name);
您正在向量中存储指针,该指针会立即变为无效(cur
在下一次readdir
或closedir
调用之前有效)。最好的解决方法是编写您想要的代码 - 将nodes
设为string
的向量。最简单的解决方法:
nodes.push_back(strdup(cur->d_name));
答案 1 :(得分:1)