在实际应用中,对文件的操作是十分频繁的,我们需要对文件进行拷贝,重命名等操作,这是就需要获取文件的绝对路径,一般情况下,该路径是以字符串的形式存储的,如果我们需要对文件进行重命名等,就需要对绝对路径这个字符串进行处理,比如获取这个字符串的某个位置中的一个子字符串等,本片博客针对今天用到的部分字符串的操作函数进行记录,以便以后再次用到的时候查阅使用,同时,我在写程序的过程中也参考了许多网上的博客等资料,希望自己的记录有朝一日也可以帮助到其他人。

首先在windows系统下,采取以下的命令,可以将当前文件夹下以及子文件夹下的所有jpg文件的绝对路径写到temp.set文件之中,那么我们就可以依次读取set文件中的每一行来获取每个jpg的文件名,如下所示的例子,那么接下来就是对于这个字符串的处理了。

 dir *.jpg /b/s > tmp.set
 D:\VideoRetrieval测试结果\result_case2\-1_[,,,].jpg\all_result\.416333_14.jpg
 D:\VideoRetrieval测试结果\result_case2\-1_[,,,].jpg\all_result\.416405_19.jpg
 D:\VideoRetrieval测试结果\result_case2\-1_[,,,].jpg\all_result\.416566_14.jpg
 D:\VideoRetrieval测试结果\result_case2\-1_[,,,].jpg\all_result\.416878_17.jpg
 D:\VideoRetrieval测试结果\result_case2\-1_[,,,].jpg\all_result\.417536_14.jpg
 D:\VideoRetrieval测试结果\result_case2\-1_[,,,].jpg\all_result\.417708_21.jpg
 D:\VideoRetrieval测试结果\result_case2\-1_[,,,].jpg\all_result\.417795_21.jpg
 D:\VideoRetrieval测试结果\result_case2\-1_[,,,].jpg\all_result\.418242_14.jpg
 D:\VideoRetrieval测试结果\result_case2\-1_[,,,].jpg\all_result\.418536_7.jpg
 D:\VideoRetrieval测试结果\result_case2\-1_[,,,].jpg\all_result\.418560_14.jpg
 D:\VideoRetrieval测试结果\result_case2\-1_[,,,].jpg\all_result\.418647_14.jpg
 D:\VideoRetrieval测试结果\result_case2\-1_[,,,].jpg\all_result\.418717_21.jpg
 D:\VideoRetrieval测试结果\result_case2\-1_[,,,].jpg\all_result\.418840_14.jpg
 D:\VideoRetrieval测试结果\result_case2\-1_[,,,].jpg\all_result\.419457_14.jpg
 D:\VideoRetrieval测试结果\result_case2\-1_[,,,].jpg\all_result\.419584_21.jpg
 D:\VideoRetrieval测试结果\result_case2\-1_[,,,].jpg\all_result\.419691_14.jpg

首先需要将该文件读入至内存中,如下所示,可以定义一个string的vector,然后首先将文件的绝对路径读入至一个char型的数组中,在读入的时候需要注意,要跳过空行,以及要将读取的每一行最后的换行符除掉,换成'\0'以标志该字符串的结束,由于windows系统的换行符是\r\n,因此需要将\n与\n一次去掉,并添加上'\0',然后将转换好的字符串pushjinruvector中。

     std::vector<std::string> vecRes;
     FILE*pfin  = fopen(strFN.c_str(), "rb");
     ] = {};
     , pfin))
     {
         ] == '\n')
         {
             as8Buf[strlen(as8Buf)-] = '\0';
         }
         ] == '\r')
         {
             as8Buf[strlen(as8Buf)-] = '\0';
         }

         )
         {
             continue;
         }
         vecRes.push_back(as8Buf);
     }
     fclose(pfin);

可以通过如下的语句获取绝对路径中最后的文件名

     int pos = strFullName.rfind("\\");
     std::, strFullName.length());

string中的rfind是反向查找第一个"\\"这里第一个\是转义字符,也就是找"\"然后将其所处的位置返回,然后在利用string的substr函数将该位置直至最后的子字符串返回。还可以循环调用上述的函数来获取上n层的文件夹的名称,但是需要注意好边界条件的判断,考虑到n的各种取值情况,做好if else的判断。

另外,有时文件名中需要有一些数据信息,比如得分值、ID号等,那么此时就会涉及到字符串与int以及float等类型之间的转换,这种转换十分经非常用到,但是每次用的时候都要重新去查,这次记录下来,只记录了我采取的方式:

float型转string:

 std::to_string(video_ID)

string转float:

 float curScore = atof(strScore.c_str());

都需要将#include <string>头文件包含在内。

C++取出string的一部分以及int型转成string类型的更多相关文章

  1. VB中将INT型转换成STRING和从STRING转换成INT型的函数

    CStr 函数示例本示例使用 CStr 函数将一数值转换为 String. Dim MyDouble, MyStringMyDouble = 437.324   ' MyDouble 为 Double ...

  2. double型转换成string型

    double型转换成string型 题目描写叙述: 如有一个函数.其可接受一个long double參数,并将參数转换为字符串.结果字符串应保留两位小数,比如,浮点值123.45678应该生成&quo ...

  3. 如何将int整型转换成String字符串类型

    自动类型转换适用于兼容类型之间从小范围到大范围数据的转换. nt转换成String int i = 10; int b=1: System.out.pritnln(a + b); 里面靠近字符串,所以 ...

  4. oracle.sql.Clob类型转换成String类型

    方法一: public String ClobToString(Clob clob) throws SQLException, IOException { String reString = &quo ...

  5. Clob类型转换成String类型

    oracle中表结构如下: create table GRID_RESOURCE ( ID VARCHAR2(50), CNNAME VARCHAR2(50), TYPE VARCHAR2(50), ...

  6. CLOB型转成字符型

    //oracle.sql.Clob类型转换成String类型 public static String ClobToString(Clob clob) { String reString = &quo ...

  7. oracle Clob类型转换成String类型

    转载:https://www.cnblogs.com/itmyhome/p/4131339.html Clob类型转换成String类型 oracle中表结构如下: create table GRID ...

  8. C字符串和C++中string的区别 &amp;&amp;&amp;&amp;C++中int型与string型互相转换

    在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作.以下是C字符串和C++中string的区别:   C字符串 string对象(C++) 所需的头文件名称 ...

  9. C# 中怎么将string转换成int型

    int intA = 0;1.intA =int.Parse(str);2.int.TryParse(str, out intA);3.intA = Convert.ToInt32(str);以上都可 ...

随机推荐

  1. 谈谈混合 App Web 资源的打包与增量更新

    综述 移动 App 的运行环境具有带宽不稳定,流量收费,启动速度比较重要等特点,所以混合 App 如何加载 Web 资源并不是一个新问题.本文目的是总结出一种资源打包下载的思路和方案,并且提供一种打包 ...

  2. virtio 半虚拟化驱动

    半虚拟化驱动 5.1.1 virtio概述 KVM是必须使用硬件虚拟化辅助技术(如Intel VT-x.AMD-V)的hypervisor,在CPU运行效率方面有硬件支持,其效率是比较高的:在有Int ...

  3. post 与 get 在转码的区别

    前端输入中文的时候,后端post通过 String text = getRequest().getParameter("text");可以正常拿到中文, 但是通过get的时候就会出 ...

  4. SU Demos-02Filtering-06Sukfilter

    本demo中数学原理纯粹不知道,看来以后需要抓紧时间补课了,只附图. 运行结果图如下:

  5. uboot环境变量与内核MTD分区关系

    uboot 与系统内核中MTD分区的关系: 分区只是内核的概念,就是说A-B地址放内核,C-D地址放文件系统,(也就是规定哪个地址区间放内核或者文件系统)等等. 1:在内核MTD中可以定义分区A~B, ...

  6. The new Portable Class Library for SQLite z

    Microsoft Open Technologies has recently released a Portable Class Library for SQLite. Thanks to it, ...

  7. react简书笔记一 环境, git 和 项目 关联

    1.. 建立git项目  ( 码云, github 都可以 ), 具体步骤: https://www.cnblogs.com/andy-lehhaxm/p/10720717.html 1.1  git ...

  8. HTML5-canvas1.0

    HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.<canvas> 标签只是图形容器,您必须使用脚本来绘制图形.你可以通过多种方 ...

  9. noip第16课资料

  10. 【BZOJ2631】tree

    Description 一棵n个点的树.每一个点的初始权值为1. 对于这棵树有q个操作,每一个操作为下面四种操作之中的一个: + u v c:将u到v的路径上的点的权值都加上自然数c: - u1 v1 ...