בטח, בואו נעמיק בנושא של קבלת שם קובץ מנתיב בעזרת C++.
מבוא
חילוץ שם הקובץ מנתיב היא משימה שכיחה בתכנות, במיוחד בפעולות הכרוכות בטיפול בקבצים. מאמר זה מספק הסבר מעמיק כיצד לבצע משימה זו באמצעות C++. עד סוף המאמר, תוכל להבין וליישם פתרון לבעיה זו.
הפתרון
הפתרון כולל שימוש בפונקציות המובנות המסופקות על ידי הספרייה הסטנדרטית של C++. הספרייה שבה נתמקד היא ספריית מערכת הקבצים, שהוצגה ב-C++17. הוא מספק פונקציות שונות כדי לתפעל קבצים וספריות.
#include
std::string get_filename(std::string path){
החזר std::filesystem::path(path).filename().string();
}
הבנת הקוד
הפונקציה get_filename לוקחת ארגומנט מחרוזת - נתיב, ומחזירה את שם הקובץ. הפונקציה משתמשת בספריית מערכת הקבצים. אנו יוצרים אובייקט filesystem::path עם מחרוזת הנתיב שסופקה, ומשתמשים בשיטת filename() כדי להשיג את שם הקובץ. לאחר מכן, שם הקובץ מומר למחרוזת באמצעות שיטת string() ומוחזר על ידי הפונקציה.
- השורה הראשונה היא המקום שבו אנו כוללים את ספריית מערכת הקבצים בקוד שלנו.
- הפונקציה get_filename מוגדרת עם נתיב ארגומנט מחרוזת.
- אנו יוצרים אובייקט של מערכת קבצים::path עם מחרוזת הנתיב.
- שיטת שם הקובץ נקראת באובייקט filesystem::path כדי לקבל את שם הקובץ.
- לאחר מכן, שם הקובץ מומר למחרוזת באמצעות שיטת string() .
ספריית מערכת הקבצים
תקן C++17 הציג את ספריית מערכת הקבצים, המורכבת מסדרה של מחלקות ופונקציות שמטרתן לבצע פעולות בנתיבי קבצים, קבצים וספריות. אחת המחלקות שלו - filesystem::path, משמשת בפתרון שלנו כדי לחלץ את שם הקובץ מהנתיב.
ספרייה זו מאפשרת לך לבצע פעולות כגון קריאה, כתיבה, שינוי שמות של קבצים, יצירה והסרה של ספריות וכן הלאה, ומפשטת באופן דרסטי את המניפולציות של מערכת הקבצים ב-C++.
שיטות חלופיות
במקרים בהם ספריית מערכת הקבצים אינה זמינה, ניתן להשתמש בשיטות אחרות כדי לחלץ את שם הקובץ מנתיב. חלופה אחת כוללת שימוש בפונקציות מניפולציה של מחרוזות הזמינות בספריית המחרוזות. הנה דוגמה:
#include
std::string get_filename_old(std::string path){
std::size_t found = path.find_last_of(“/\”);
return path.substr(נמצא+1);
}
לסיכום, חילוץ שם קובץ מנתיב ניתן להשגה באמצעות ספריית מערכת הקבצים ב-C++. חיוני להכיר את הפונקציונליות של הספרייה שכן טיפול בקבצים נפוץ במשימות תכנות רבות.