记录一种操作字符串获取文件类型的操作方式,方便后期的使用。示例:
输入:"D:/code/Test/Test.txt"
输出:".txt"
设计逻辑:
1.通过查找”/“或者”\\“,找到文件名所在位置,并记录位置。
2.查找字符串从后往前遍历,查找”.“ 找到所在位置并记录。
3.通过字符串相减操作,返回类型。
代码设计如下:
#include<string>
#include <ctype.h>
#define ISPATHPART(c) ((c)=='/'||(c)=='\\')
std::string GetExt(const std::string& strPathFile)
{
if (!strPathFile.empty())
{
int number = 0, index = 0;
if (isalpha(strPathFile[0]) && strPathFile[1] == ':')
{
index = 1;
number = index + 1;
}
index++;
int nlen = strPathFile.length();
while (index<nlen)
{
if (ISPATHPART(strPathFile[index]))
{
number = index + 1;
}
index++;
}
if (number >= nlen)
{
return"";
}
int nt = 0;
while (number<index)
{
index--;
if (strPathFile[index] == '.')
{
nt = index;
break;
}
}
return std::string(strPathFile.c_str() + nt, nlen - nt);
}
return "";
}
int main()
{
std::string path = "D:/code/Test/Test.txt";
path = GetExt(path);
return 0;
}
测试结果: