【1】读取子文件下文件名存入TXT

(1)首先了解一下一个文件结构体:

struct _finddata_t {unsigned    attrib;time_t      time_create;   time_t      time_access;   time_t      time_write;_fsize_t    size;char        name[260];
};

time_t的类型就是long。

而_fsize_t的类型就是unsigned long。

现在来解释一下结构体的数据成员吧。

attrib,就是所查找文件的属性:

_A_ARCH(存档)
_A_HIDDEN(隐藏)
_A_NORMAL(正常)
_A_RDONLY(只读)
_A_SUBDIR(子文件夹)
_A_SYSTEM(系统)

time_create、time_access和time_write分别是创建文件的时间、最后一次访问文件的时间和文件最后被修改的时间。

size:文件大小。

name:文件名。

(2).用 _findfirst 和 _findnext 查找文件(这两个函数均在io.h里面。)

1、_findfirst函数:long _findfirst(const char *, struct _finddata_t *);

第一个参数为文件名,可以用"*.*"来查找所有文件,也可以用"*.cpp"来查找.cpp文件。第二个参数是_finddata_t结构体指针。若查找成功,返回文件句柄,若失败,返回-1。

2、_findnext函数:int _findnext(long, struct _finddata_t *);

第一个参数为文件句柄,第二个参数同样为_finddata_t结构体指针。若查找成功,返回0,失败返回-1。

3、_findclose()函数:int _findclose(long);

只有一个参数,文件句柄。若关闭成功返回0,失败返回-1。

注意:在win10系统下在编译时findnext会报错,如图为:

因为_findnext()返回类型为intptr_t而非long型,从“intptr_t”转换到“long”丢失了数据。只需要把一般写的:

long handle
改为
intptr_t handle
既可以运行

代码如下:

#include<iostream>
#include<fstream>
#include <io.h>
using namespace std;
const char *to_search = "E:\\opencv学习\\学习opencv源码\\official-code-in-the-learning-Opencv3-master\\calibration\\*.jpg";//欲查找的文件,支持通配符(可选择文件类型)
//可以指定查找所有文件\\*.*,也可以是指定文件\\*.格式类型
int main()
{//这里的handle句柄不要定义为long类型,否则_findnext会报错intptr_t handle;                                   //用于查找的句柄struct _finddata_t fileinfo;                       //文件信息的结构体handle = _findfirst(to_search,&fileinfo);          //第一次查找if (-1 == handle)return -1;if (fileinfo.attrib != _A_SUBDIR)//令文件的属性不属于子文件夹printf("%s\n", fileinfo.name);ofstream outdata;      //定义输出流outdata.open("E:\\list.txt", ios::app);//ios::app是尾部追加的意思outdata << fileinfo.name << endl;                   //打印出找到的文件的文件名while (!_findnext(handle, &fileinfo))               //循环查找其他符合的文件,知道找不到其他的为止{if (fileinfo.attrib != _A_SUBDIR)//printf("%s\n", fileinfo.name);//outdata.open("E:\\list.txt", ios::app);//ios::app是尾部追加的意思outdata << fileinfo.name << endl;}outdata.close();                                   //循环结束关闭输出流_findclose(handle);                                //别忘了关闭句柄system("pause");return 0;
}

【2】从TXT中按行读取字符串

读取主要有两种方式,在内部可以自己识别出/t、/n等分隔符。

#include<iostream>
#include<fstream>
#include <io.h>
#include<string> //通过>>将流析取器传入字符串要用到该文件
using namespace std;
const char *to_search = "E:\\opencv学习\\学习opencv源码\\official-code-in-the-learning-Opencv3-master\\calibration\\*.jpg";//欲查找的文件,支持通配符(可选择文件类型)
//可以指定查找所有文件\\*.*,也可以是指定文件\\*.格式类型
int main()
{ifstream ifile;ifile.open("E:\\list.txt", ios::in );if (!ifile){cout << "文件为打开" << endl;}//第一种方法读取//string str;        //将str改为char类型,可以按字符读取输入文件流//while (ifile >> str)//{// //  cout << str  << endl;//}//第二种方法while (!ifile.eof()) //判断是否到txt截止符{string str;getline(ifile,str);cout << str << endl;}ifile.close();//不要忘记运行结束后关闭传入流system("pause");return 0;
}
关于传入传出流是相对于VS操作而言,从外部到VS是传入,从vs到外部为传出。

C++学习系列---读取文件名存入txt和从txt读取每行信息相关推荐

  1. C++实现从.txt文件中读取数据存入数组,将数组数据写入.txt文件

    声明: 编译器:vs2017 所有用到的.txt文件都是提前放在当前工程目录下的. 完整测试代码:github–Zhaotiedan 方法一:针对可以提前知道存入数组的大小 1.从.txt文件中读取数 ...

  2. opencv学习系列——视频格式的读取

    opencv学习系列--视频格式的读取 视频读取本质上就是读取图像,因为视频是由一帧一帧图像组成的.1秒24帧基本就能流畅的读取视频了. (1)打开视频文件 A. VideoCapture cap; ...

  3. 编写程序:构造如下文档内容 姓名:邀请您来参加本次会议 李雷 其中,姓名从文件 names.txt 中读取,共 3 个,产生的输出文件为 3 个,输出文件名为对应的 姓名,txt如 张三.txt

    3. 编写程序:构造如下文档内容姓名:邀请您来参加本次会议李雷其中,姓名从文件 names.txt 中读取,共 3 个,产生的输出文件为 3 个,输出文件名为对应的 姓名,txt, 如 张三.txt. ...

  4. Spring Boot 学习系列(07)—properties文件读取

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 传统的properties读取方式 一般的,我们都可以自定义一个xxx.properties文件,然后在工程 ...

  5. 狂神学习系列11:SpringBoot

    狂神学习系列11:SpringBoot 声明: 本文章是基于狂神的课程所编写,本人才疏学浅,内容仅作参考 项目和markdown文件资料: 07_SpringBoot: 基于狂神说SpringBoot ...

  6. R语言学习系列之本地数据获取

    R语言学习系列之本地数据获取 任何数据分析工作之前,都得把数据先读取进来你才能进行后续的分析工作.所以本文简要介绍在R中如何对本地文件进行获取,希望可以给刚刚接触R语言的同学一点启发. 一.控制台的输 ...

  7. Java云同桌学习系列(十九)——Linux系统

    本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,我希望这个系列能够鼓励大家一同与我学习java,成为"云同桌". 每月预计保持 ...

  8. 大数据学习系列:Hadoop3.0苦命学习(一)

    传送门: 大数据学习系列:Hadoop3.0苦命学习(一) 大数据学习系列:Hadoop3.0苦命学习(二) 大数据学习系列:Hadoop3.0苦命学习(三) 大数据学习系列:Hadoop3.0苦命学 ...

  9. Python - 深度学习系列1-目标识别 yolo

    1 目的 实现基于yolo网络的目标识别. 使用github上开源的代码.那么需要做的事只有几样: 1 原理.多少还是知道一下yolo的原理以及应用特点. 2 环境.对应的安装包,特别是cpu.gpu ...

最新文章

  1. 用python循环语句求素数_Python基础入门_3条件语句和迭代循环
  2. 基于椭圆拟合的环岛识别方法
  3. css变成块级元素_css块级元素垂直居中常用布局方式
  4. BZOJ3992[SDOI2015]序列统计
  5. springboot 替换tomcat_Springboot (二十八)云配置服务器
  6. android viewpager动态加载页面,Android viewpager中动态添加view并实现伪无限循环的方法...
  7. SQL比oracle卡,对比Oracle与SQL Server
  8. 企业流程管理平台V2.0介绍
  9. .NET 开源项目 StreamJsonRpc 介绍[中篇]
  10. DotNetCore 3.0 助力 WPF本地化
  11. 吴恩达机器学习【第三天】线性代数基础知识
  12. warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
  13. Angular中响应式表单 FormBuilder、FormControl 、FormGroup、FormArray、setControl、setValue用法总结
  14. chromium/chrome内核修改、SEO快排搭建(2022最新源码)
  15. 验证码Kaptcha的使用
  16. php免安装配置方法,mysql免安装版配置步骤详解
  17. thunderbird 配置exchange邮箱
  18. 如何使用Grafana轻松实现OVL数据可视化
  19. SPI串行外围设备接口
  20. 【WhatsApp营销】不可错过的品牌WhatsApp创意营销案例分享

热门文章

  1. 2017,不能再咸鱼了
  2. 计算机网络——第二章(应用层)
  3. [转]AJAX基础教程
  4. 【QQ邮箱第三方客户端设置】Outlook登录QQ邮箱报错,解决方案。
  5. ES6中setTimeout函数的this
  6. 请假系统jsp mysql_[源码和文档分享]基于JSP和MYSQL数据库实现的请假管理系统
  7. 理解热插拔技术:热插拔保护电路设计过程实例
  8. Linux USB 驱动开发—— 热插拔
  9. visionPro中混淆阈值是什么?
  10. 一文看懂PPP协议——PPP协议简介