Метод stem
Метод stem класса path возвращает
имя файла без расширения. Если путь содержит
расширение, оно отбрасывается. Метод не принимает
параметров и возвращает объект path, содержащий
часть пути без расширения. Сама исходная переменная
при этом не изменяется.
Синтаксис
path.stem()
Пример
Давайте получим имя файла без расширения из пути
/var/www/index.html:
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main()
{
fs::path p = "/var/www/index.html";
cout << p.stem() << endl;
return 0;
}
Результат выполнения кода:
"index"
Пример
Если у файла несколько точек, расширением считается
только последняя часть. Давайте получим имя файла
из пути /home/user/archive.tar.gz:
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main()
{
fs::path p = "/home/user/archive.tar.gz";
cout << p.stem() << endl;
return 0;
}
Результат выполнения кода:
"archive.tar"
Пример
Если файл не имеет расширения, метод stem
возвращает всё имя файла целиком. Давайте получим
имя файла из пути /home/user/readme:
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main()
{
fs::path p = "/home/user/readme";
cout << p.stem() << endl;
return 0;
}
Результат выполнения кода:
"readme"
Пример
Если путь оканчивается точкой, метод stem
вернёт пустую строку. Давайте проверим это
на пути /home/user/file.:
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main()
{
fs::path p = "/home/user/file.";
cout << "\"" << p.stem().string() << "\"" << endl;
return 0;
}
Результат выполнения кода:
Смотрите также
-
метод
extension,
который возвращает расширение файла -
метод
filename,
который возвращает имя файла -
метод
replace_extension,
который заменяет расширение файла -
класс
path,
который представляет путь к файлу или каталогу