如何在C++中从路径中提取文件名和扩展名?
在C++开发中,有时需要从文件路径中提取出文件名和扩展名,以方便我们进行一些操作,比如文件的打开、文件名的改写等,本篇文章将介绍如何通过简单的代码实现从路径中提取文件名和扩展名的功能。
1. 取得文件名
取得文件名可以简单地通过字符串查找和分割实现,在代码中,我们需要使用到 string 类中的 substr 和 find_last_of 函数,通过这两个函数我们可以截取出路径中最后一个路径分隔符(/或\)后面的字符串即为文件名。
#include <iostream>
#include <string>
using namespace std;
int main() {
string path = "/user/temp/file.txt"; //测试路径
//取得最后一个路径分隔符的位置
size_t position = path.find_last_of("/\\");
//截取最后一个路径分隔符后面的字符串即为文件名
string filename = path.substr(position+1, path.length()-position-1);
cout << filename << endl; // 输出:file.txt
return 0;
}
在这段代码中,我们通过 find_last_of 函数查找最后一个路径分隔符的位置,使用 substr 函数截取文件名,最终输出 file.txt。
2. 取得扩展名
同样,在C++中也可以通过与取得文件名类似的方式从路径中提取出文件扩展名。在代码中,我们继续使用 string 类中的 substr 和 find_last_of 函数,先得到文件名再通过查找最后一个小数点获取扩展名。
#include <iostream>
#include <string>
using namespace std;
int main() {
string path = "/user/temp/file.txt"; //测试路径
//取得最后一个路径分隔符的位置
size_t position = path.find_last_of("/\\");
//截取最后一个路径分隔符后面的字符串即为文件名
string filename = path.substr(position+1, path.length()-position-1);
//查找最后一个小数点的位置作为扩展名的分隔符
size_t dot = filename.find_last_of(".");
//截取小数点之后的字符串即为扩展名
string extension = filename.substr(dot+1, filename.length()-dot-1);
cout << extension << endl; // 输出:txt
return 0;
}
在这段代码中,我们通过 find_last_of 函数查找最后一个路径分隔符的位置和最后一个小数点的位置,并使用 substr 函数截取扩展名,最终输出 txt。
结论
本篇文章介绍了如何从路径中获取文件名和扩展名。在 C++ 中,通过使用 string 类中的 substr 和 find_last_of 函数实现简单高效。通过本文的学习,您已经可以方便地从文件路径中获取文件名和扩展名,为后续的开发提供便利。