windows路径有两种方式,一种正斜杠,一种反斜杠都可以表示路径,该方法可以支持这两种表达方法

方法一:采用substr()进行分割

string path1 = "D:/datas/FusionTestData/datas/GF6_PMS_E111.2_N27.6_20180719_L1A1119837939-PAN.tiff"
string path2 = "D:\datas\FusionTestData\datas\GF6_PMS_E111.2_N27.6_20180719_L1A1119837939-PAN.tiff"string::size_type iPos = (path1 .find_last_of('\\') + 1) == 0 ?  path1 .find_last_of('/') + 1: path1 .find_last_of('\\') + 1 ;
string ImgName = path1 .substr(iPos, path1 .length() - iPos);//获取带后缀的文件名
string ImgPath = path1 .substr(0,iPos);//获取文件路径
string ImgNameNoTag = ImgName.substr(0, ImgName.rfind("."));//获取不带后缀的文件名
string ImgNameTag = ImgName.substr(ImgName.rfind("."),ImgName.length());//获取后缀名

方法2:使用_splitpath()函数分割路径,_makepath()函数组合路径
使用样例:

#include<iostream>
int main(){string path1 = "D:/datas/FusionTestData/datas/GF6_PMS_E111.2_N27.6_20180719_L1A1119837939-PAN.tiff";string path2 = "D:\datas\FusionTestData\datas\GF6_PMS_E111.2_N27.6_20180719_L1A1119837939-PAN.tiff";string path3 = "D:\\datas\\FusionTestData\\datas\\GF6_PMS_E111.2_N27.6_20180719_L1A1119837939-PAN.tiff";char orbitfilename[1024];char drive[_MAX_DRIVE];char dir[_MAX_DIR];char fname[_MAX_FNAME];char ext[_MAX_EXT];_splitpath(path1.c_str(), drive, dir, fname, ext);printf("drive:%s\n", drive);printf("dir:%s\n", dir);printf("fname:%s\n", fname);printf("ext:%s\n", ext);_makepath(orbitfilename, drive, dir, fname, "orbit");printf("orbitfilename:%s\n\n", orbitfilename);char orbitfilename2[1024];char drive2[_MAX_DRIVE];char dir2[_MAX_DIR];char fname2[_MAX_FNAME];char ext2[_MAX_EXT];_splitpath(path2.c_str(), drive2, dir2, fname2, ext2);printf("drive2:%s\n", drive2);printf("dir2:%s\n", dir2);printf("fname2:%s\n", fname2);printf("ext2:%s\n", ext2);_makepath(orbitfilename2, drive2, dir2, fname2, "test2");printf("orbitfilename2:%s\n\n", orbitfilename2);char orbitfilename3[1024];char drive3[_MAX_DRIVE];char dir3[_MAX_DIR];char fname3[_MAX_FNAME];char ext3[_MAX_EXT];_splitpath(path3.c_str(), drive3, dir3, fname3, ext3);printf("drive3:%s\n", drive3);printf("dir3:%s\n", dir3);printf("fname3:%s\n", fname3);printf("ext3:%s\n", ext3);_makepath(orbitfilename3, drive3, dir3, fname3, "test3");printf("orbitfilename3:%s\n\n", orbitfilename3);return 0;}

结果如下:
第二个路径是单反斜杠,有问题。改成双反斜杠也就OK了

C++ string获取文件路径文件名、文件路径、文件后缀(两种方式)相关推荐

  1. POI读取word文件,(支持HSSF和XSSF两种方式)

    POI读取word文件,(支持HSSF和XSSF两种方式) 参考:HSSF,XSSF,SXSSF三种方式 1.引用maven(版本必须一致) <dependency><groupId ...

  2. 运行python程序的两种方式交互式和文件式_执行Python程序的两种方式

    交互式(了解) 交互式环境下,敲完一条命令按下enter键马上能看到结果,调试程序方便.程序无法永久保存,关掉cmd窗口数据就消失了. 命令行式(了解) 打开文本编辑器,在文本编辑器中写入一串字符. ...

  3. Android获取短信验证码并自动填充的两种方式

    有些项目为了方便客户操作,减去客户输入短信验证码的时间,会要求安卓app能够获取收到的短信验证码并自动填充到输入框.所以,我整理了安卓获取短信验证码并自动填充输入框的两种方法,而且正式在项目中使用并无 ...

  4. egg.js ajax上传文件,egg.js 通过 form 和 ajax 两种方式上传文件并自定义目录和文件名...

    一.需求 egg.js 的文件上传个人觉得很一般,内置的 multipart 插件并不怎么好用. egg-multipart 也是基于 co-busboy 实现的. egg 官方给的文件上传的示例地址 ...

  5. 获取远程文章内容时,显示图片的两种方式

    第一种: 通过Html.fromHtml(String,ImageGetter,tagHandler) CharSequence text = Html.fromHtml(capter, new Im ...

  6. springboot Java实现多文件的zip压缩操作 + 通过浏览器下载文件的两种方式

    注只适配utf-8的场景,待完善! 压缩为zip文件 通过java程序输出文件 /*** 功能:压缩多个文件成一个zip文件* @param srcfile:源文件列表* @param zipfile ...

  7. Express全系列教程之(四):获取Post参数的两种方式

    一.关于POST请求 post方法作为http请求很重要的一部分,几乎所有的网站都有用到它,与get不同,post请求更像是在服务器上做修改操作,它一般用于数据资源的更新. 相比于get请求,post ...

  8. html中获取modelandview中的json数据_从Bitmap中获取YUV数据的两种方式

    从Bitmap中我们能获取到的是RGB颜色分量,当需要获取YUV数据的时候,则需要先提取R,G,B分量的值,然后将RGB转化为YUV(根据具体的YUV的排列格式做相应的Y,U,V分量的排列) 所以这篇 ...

  9. 读写ASCII文件的两种方式

    读写ASCII文件的两种方式 :读取文件的路径 EXAMPLE: IDL>asciiFile=FILE_DIRNAME(ROUTINE_FILEPATH('TEST_READF')) + '\d ...

最新文章

  1. access update语句执行_MySQL 中 update 修改数据与原数据相同会再次执行吗?
  2. oracle中treat函数,Oracle 函数概览
  3. python requests 使用代理
  4. CSS 强制换行和禁止换行强制换行 和禁止换行样式
  5. 用filter实现web程序的统一认证
  6. ASP.NET MVC3 权限验证
  7. puppet php,puppet入门实践
  8. mysql存储登录密码_用户身份验证:存储用户ID和密码在一个MySQL数据库
  9. ubuntu 中文设置
  10. unit 12 文档练习
  11. rosdep init 和rosdep update的解决方法,亲测有效
  12. 计算机学院方阵入场词,学校运动会方阵入场解说词
  13. 手游传奇架设教程_传奇手游战神引擎架设教程
  14. 如何用计算机求一个正数的算术平方根,用计算器求一个正数的算术平方根
  15. thinkphp集成系列之阿里云oss
  16. xp证书错误补丁_爱思助手 IPA 签名功能常见问题汇总,安卓软件修复南瓜影视无法播放问题,新增皮皮虾xp版,内置皮皮虾伴侣!...
  17. 判断听云是否正常嵌入及注意事项
  18. 电视机丢失卫星信号出现花屏——Shader
  19. 标贝科技|AI企业级应用榜单发布,百度、讯飞、标贝科技等50家产品上榜
  20. vue搜索(不区分大小写)通用

热门文章

  1. 白帽黑客入门,每天一个黑客技巧实现黑客的自我突破 !(附工具包)
  2. python自学之《21天学通Python》(14)——第17章 Web网站编程
  3. Linux 通配符与特殊符号
  4. VRF共识算法设计与实现
  5. python中种子数是什么意思_Python shuffle():其种子数的粒度/shuffle()结果多样性...
  6. 计算机一次传输多少kb,电脑知识:1M等于多少Kb
  7. selinux权限调试
  8. [ElementUI] 修改默认语言为英文
  9. vue enter事件,键盘事件
  10. 微信昵称乱码 mysql_微信昵称乱码及mysql编码格式设置(utf8mb4)