参考:C++:从完整路径中提取文件名、不带后缀的名字、后缀名_SSS_369-CSDN博客_从路径中提取文件名
读取txt:
std::string image_list = "list.txt";std::fstream fd(image_list.c_str(), std::ios::in);if (!fd) {std::cout << "Failed to open " << image_list << std::endl;return -2;}std::string line;while (getline(fd, line)) {}
C++:从完整路径中提取文件名、不带后缀的名字、后缀名
#include <iostream> #include <string> using namespace std;void main(){string path = "C:\\Users\\Administrator\\Desktop\\text\\data.22.txt";//1.获取不带路径的文件名string::size_type iPos = path.find_last_of('\\') + 1;string filename = path.substr(iPos, path.length() - iPos);cout << filename << endl;//2.获取不带后缀的文件名string name = filename.substr(0, filename.rfind("."));cout << name << endl;//3.获取后缀名string suffix_str = filename.substr(filename.find_last_of('.') + 1);cout << suffix_str << endl;}
给定一个字符串,比如char *str = C:\Users\Documents Files\-04\12345.bmp; 提取文件名“12345”,代码如下string path = str;int ps = path.find_last_of("\\"); int pe=path.find_last_of(".");string pic_name=path.substr(ps+1,pe-ps+1);//pic_name="12345"substr(string,start,length)string - 指定的要截取的字符串。start - 必需,规定在字符串的何处开始。正数 - 在字符串的指定位置开始,负数 - 在从字符串结尾的指定位置开始,0 - 在字符串中的第一个字符处开始。length - 可选,指定要截取的字符串长度,缺省时返回字符表达式的值结束前的全部字符。