C++中如何从路径字符串中获取文件名!
如题,最好是能直接从标准库的字符串中获取,实在没有其他的也行...如图,路径字符串,一个std::stringpath;怎么冲path中获取world或者world.sh...
如题,最好是能直接从标准库的字符串中获取,实在没有其他的也行...
如图,路径字符串,一个std::string path;怎么冲path中获取 world或者world.shp 展开
如图,路径字符串,一个std::string path;怎么冲path中获取 world或者world.shp 展开
4个回答
展开全部
//将字符串根据给定分隔符分割成多个子字符串
//strLine 要分割的字符串
//cDelimiter 分割字符
//strArray string数组用来存放分割好的字符串
int ParseSubStrByDelimiter(string strLine, char cDelimiter, string* strArray)
{
int nSeparator = -1;
int nNextSeparator = -1;
int nStrLen = strLine.length();
int nStrArraySize = 0;
int i = 0;
//strLine replace '\t' to ' '
int nIndex = strLine.find('\t', 0);
while(nIndex >= 0)
{
strLine.replace(nIndex, 1, " ");
nIndex = strLine.find('\t', 0);
}
int nCommaPos = strLine.find(',');
int nSemicolonPos = strLine.find(';');
if (nCommaPos < 0 && nSemicolonPos < 0)
{
cDelimiter = '/';
}
switch (cDelimiter)
{
case '/ ':
for (i = 0; i < nStrLen;)
{
if (strLine.at(i) != cDelimiter)
{
nSeparator = i;
nNextSeparator = strLine.find(cDelimiter, nSeparator + 1);
if (nNextSeparator < 0)
{
strArray[nStrArraySize++] = strLine.substr(nSeparator, nStrLen - 1);
break;
}
strArray[nStrArraySize++] = strLine.substr(nSeparator, nNextSeparator-nSeparator);
i = nNextSeparator;
if (i >= nStrLen)
{
break;
}
}
else
{
i++;
}
}
break;
case ',':
case ';':
for (i = 0; i < nStrLen;)
{
if (i == 0)
{
if (strLine.at(i) == cDelimiter)
{
strArray[nStrArraySize++] = "";
nSeparator = i;
}
else
{
nSeparator = strLine.find(cDelimiter, nSeparator + 1);
if (nSeparator < 0)
{
break;
}
strArray[nStrArraySize++] = strLine.substr(0, nSeparator);
}
i = nSeparator;
}
else
{
nSeparator = i;
nNextSeparator = strLine.find(cDelimiter, nSeparator + 1);
if (nNextSeparator < 0)
{
strArray[nStrArraySize++] = strLine.substr(nSeparator + 1, nStrLen - nSeparator - 1);
break;
}
if (nNextSeparator == nSeparator + 1)
{
strArray[nStrArraySize++] = "";
}
else
{
strArray[nStrArraySize++] = strLine.substr(nSeparator + 1, nNextSeparator - nSeparator - 1);
}
i = nNextSeparator;
}
}
break;
default:
break;
}
return nStrArraySize;
}
对于你这个字符串而言这么用
string strArray[15];
int Arraysize= ParseSubStrByDelimiter(strline,'/',strArray);
strArray[Arraysize-1]就是你要的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
PathFindFileName("D:\OSGEarth2.4/data/world.shp") 可以直接返回 world.shp
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
find_last_of("/") + substring()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询