1 // Note:Your choice is C++ IDE
2 #include <iostream>
3 #include <string>
4 using namespace std;
5 //获取文件名字
6 string getFilename(string s) {
7 char sep = '/';
8 char sepExt='.';
9
10 #ifdef _WIN32
11 sep = '\';
12 #endif
13
14 /*
15 string 中的find()函数:
16 找到 -- 返回 第一个字符的索引
17 没找到--返回 string::npos
18 rfind()函数,反向查找!
19
20 (1)size_t find (const string& str, size_t pos = 0) const; //查找对象--string类对象
21 (2)size_t find (const char* s, size_t pos = 0) const; //查找对象--字符串
22 (3)size_t find (const char* s, size_t pos, size_t n) const; //查找对象--字符串的前n个字符
23 (4)size_t find (char c, size_t pos = 0) const; //查找对象--字符
24 */
25 size_t i = s.rfind(sep, s.length( ));
26 if (i != string::npos) {
27 string fn= (s.substr(i+1, s.length( ) - i));//substr主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。
28 size_t j = fn.rfind(sepExt, fn.length( ));
29 if (i != string::npos) {
30 return fn.substr(0,j);
31 }else{
32 return fn;
33 }
34 }else{
35 return "";
36 }
37 }
38
39 int main()
40 {
41 string filename = "E:\Picture\aa.jpg";
42 string filename_whithoutExt=getFilename(filename);//如果图片路径为E:\Picture\aa.jpg..那么它为aa
43 //E:\Picture那么它就是:Picture
44 cout << "working with file: "<< filename_whithoutExt << "
";
45 return 0;
46 }