详解C++ string常用截取字符串方法

 更新时间:2019年05月15日 09:03:22   作者:C赵江松  
这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

string常用截取字符串方法有很多,但是配合使用以下两种,基本都能满足要求:

find(string strSub, npos);

find_last_of(string strSub, npos);

其中strSub是需要寻找的子字符串,npos为查找起始位置。找到返回子字符串首次出现的位置,否则返回-1;

注:

(1)find_last_of的npos为从末尾开始寻找的位置。

(2)下文中用到的strsub(npos,size)函数,其中npos为开始位置,size为截取大小

例1:直接查找字符串中是否具有某个字符串(返回"2")

std::string strPath = "E:\\数据\\2018\\2000坐标系\\a.shp"
int a = 0; 
if (strPath.find("2018") == std::string::npos)
{
	a = 1;
}
else
{
	a = 2;
}
return a;

例2:查找某个字符串的字符串(返回“E:”)

std::string strPath = "E:\\数据\\2018\\2000坐标系\\a.shp"
int nPos = strPath.find("\\");
if(nPos != -1)
{
  strPath = strPath.substr(0, nPos);
}
return strPath;

例3:查找某个字符串中某两个子字符串之间的字符串(返回“2000坐标系”)

std::string strPath = "E:\\数据\\2018\\2000坐标系\\a.shp"
std::string::size_type nPos1 = std::string::npos;
std::string::size_type nPos2 = std::string::npos;
nPos1 = strPath.find_last_of("\\");
nPos2 = strPath.find_last_of("\\", nPos1 - 1);
if(nPos1 !=-1 && npos2 != -1)
{
  strPath = strPath.substr(nPos2 + 1, nPos1 - nPos2 - 1);
}
return strPath;

提高:递归获取路径名中的子目录

//获取路径名中的子目录:strPath为路径名,strSubPath为输出的子目录,
 nSearch为从尾向前检索的级别(默认为1级)
 
bool _GetSubPath(std::string& strPath,std::string& strSubPath, int nSearch)
{	
	if (-1 == nSearch || strPath.empty())
		return false;
	std::string::size_type nPos1 = std::string::npos;
	nPos1 = strPath.find_last_of("\\");
	if (nPos1 != -1)
	{
		strSubPath = strPath.substr(nPos1 + 1, strPath.length() - nPos1);
		int nNewSearch = nSearch > 1 ? nSearch - 1 : -1;
		_GetSubPath(strPath.substr(0, nPos1), strSubPath, nNewSearch);
	}
	return true;
}
 
int main()
{
  std::string strPath = "E:\\数据\\2018\\2000坐标系\\a.shp";
  std::string strSubPath = "";
  if(_GetSubPath(strPath, strSubPath, 1)
  {
    printf(“返回'a.shp'”);
  }
  if(_GetSubPath(strPath, strSubPath, 2)
  {
    printf(“返回'2000坐标系'”);
  }
}

以上所述是小编给大家介绍的C++ string常用截取字符串方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • C++11中列表初始化机制的概念与实例详解

    C++11中列表初始化机制的概念与实例详解

    在我们实际编程中,我们经常会碰到变量初始化的问题,对于不同的变量初始化的手段多种多样,下面这篇文章主要给大家介绍了关于C++11中列表初始化机制的相关资料,需要的朋友可以参考下
    2021-11-11
  • C++ STL array容器访问元素的几种方式

    C++ STL array容器访问元素的几种方式

    这篇文章主要介绍了C++ STL array容器访问元素的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • C语言 条件判断详细介绍

    C语言 条件判断详细介绍

    本文主要讲解C语言 条件判断,这里整理了相关资料,详细说明了判断语句知识要点,希望能帮助学习C语言的同学
    2016-08-08
  • 使用C++程序获取新浪行情数据的方法

    使用C++程序获取新浪行情数据的方法

    这篇文章介绍了在一定的周期范围内去抓取新浪中行情数据,通过更新数据来缓解构造模拟数据与真实数据差异性,感兴趣的朋友可以了解一下
    2015-07-07
  • C++ 实现L2-002 链表去重

    C++ 实现L2-002 链表去重

    这篇文章主要介绍了C++ 实现L2-002 链表去重,本文通过简要的案例,解题思路讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++设计模式之抽象工厂模式

    C++设计模式之抽象工厂模式

    这篇文章主要介绍了C++设计模式之抽象工厂模式,本文要讲的抽象工厂模式,就是工厂方法模式的扩展和延伸,需要的朋友可以参考下
    2014-09-09
  • 数据结构 中数制转换(栈的应用)

    数据结构 中数制转换(栈的应用)

    这篇文章主要介绍了数据结构 中数制转换(栈的应用)的相关资料,需要的朋友可以参考下
    2017-06-06
  • Qt中CQGUI框架之阴影圆角窗口实现

    Qt中CQGUI框架之阴影圆角窗口实现

    这篇文章主要介绍了Qt中CQGUI框架之阴影圆角窗口实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • C++ 中循环链表和约瑟夫环

    C++ 中循环链表和约瑟夫环

    这篇文章主要介绍了C++ 中循环链表和约瑟夫环的相关资料,需要的朋友可以参考下
    2017-06-06
  • C++ VTK实例之高斯随机数的生成

    C++ VTK实例之高斯随机数的生成

    这篇文章主要介绍了VTK的一个实例之高斯随机数的生成,本文演示了从一个平均数是0.0和标准偏差是2.2的高斯分布中随机生成3个随机数。感兴趣的同学可以学习一下
    2021-11-11

最新评论