Ce face std::filesystem::path
std::filesystem::path ține o cale (relativă sau absolută) și știe să o desfacă: filename() (raport.pdf), stem() (raport), extension() (.pdf), parent_path() (directorul). Operatorul / unește componente cu separatorul corect pentru sistem (/ sau \ pe Windows).
Crearea unui path nu atinge discul: este doar text. Funcțiile precum exists, file_size sau remove verifică sau modifică efectiv fișierele.
Pentru afișare folosește p.string(). Cu std::cout << p calea apare între ghilimele, iar std::println("{}", p) funcționează doar din C++26.
Ce returnează
Un obiect cale. Metodele returnează tot path-uri.
Exemple
Exemplul 1: Componentele unei căi
#include <filesystem>
#include <print>
int main() {
namespace fs = std::filesystem;
fs::path p = "documente/facturi/2025/factura-martie.pdf";
std::println("filename: {}", p.filename().string());
std::println("stem: {}", p.stem().string());
std::println("extension: {}", p.extension().string());
std::println("parent_path: {}", p.parent_path().string());
std::println("relativă: {}", p.is_relative());
}
Rezultat
filename: factura-martie.pdf
stem: factura-martie
extension: .pdf
parent_path: documente/facturi/2025
relativă: true
Exemplul 2: Construire cu / și schimbarea extensiei
#include <filesystem>
#include <iostream>
#include <print>
int main() {
namespace fs = std::filesystem;
fs::path baza = "poze";
fs::path poza = baza / "vacanta" / "mare.jpg";
std::println("{}", poza.string());
fs::path miniatura = poza;
miniatura.replace_extension(".webp");
std::println("{}", miniatura.string());
std::cout << poza << '\n'; // cu cout apare între ghilimele
}
Rezultat
poze/vacanta/mare.jpg
poze/vacanta/mare.webp
"poze/vacanta/mare.jpg"
Greșeli frecvente
- Lipești căi cu
+între șiruri (dir + "/" + nume). Poți obține separatoare duble sau greșite; folosește operatorul/al luipath. - Te miri că
std::cout << pafișează ghilimele. Este intenționat (pentru căi cu spații); foloseștep.string().
Comenzi înrudite
std::filesystem::exists: Verifică dacă un fișier sau director există pe disc.std::filesystem::current_path: Returnează sau schimbă directorul de lucru curent al programului.std::filesystem::directory_iterator: Parcurge fișierele și directoarele dintr-un director; varianta recursive intră și în subdirectoare.std::ofstream: Creează sau deschide un fișier pentru scriere și scrie în el la fel ca în std::cout.