本質上,我想要做的是檢查文件的最後訪問時間,並將其與字符串進行比較。這裏是相關的塊:本地時間替代,將不會覆蓋提供的結構
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++,所以向正確方向的堅實推動將被賦予'接受'。
謝謝。
什麼是相關的代碼調用'localtime()'的東西。像你在做的那樣,幫助彼此發揮作用也是一個壞主意;你跳過錯誤檢查。例如,在使用結構中的數據之前,應該檢查「stat()」是否成功。 – 2012-01-18 01:17:28
你的'nodes'是'char *'的向量,而不是'string'的向量。你有沒有在while循環和closedir()之間讀取代碼的末尾打印出節點列表?我不會驚訝地發現他們都指向同一個名字。 (如果稍後將它留下來進行打印,則空間可能全部被弄壞。) – 2012-01-18 01:18:52
'節點'只在運行'localtime'後給我時髦的結果;在其他所有情況下,我可以在設置代碼後通過'nodes'進行循環,並查看文件名稱(使用'cout')。 – wanovak 2012-01-18 01:23:50