有没有一种方法可以读取C ++中的文件文件夹?

惯性无知

我有一个包含近200个单词文档的文件夹,我想使用fstream库中的ifstream fin将它们读入C ++。我有两个问题:

1)fin能够读取.doc文件,但是因为.doc文件不是纯文本,所以废话会显示在屏幕上。

2)我知道没有办法让程序自动读取具有不相关文件名的多个文件。

由于这两个问题,我正在手动浏览每个.doc文件并将其更改为.txt文件。此外,我将它们称为1.txt,2.txt,3.txt等,以便可以在C ++中使用for循环读取所有内容(我会将循环控制变量i转换为字符串x in每次迭代,并读取“ x.txt”)。

尽管这可以工作,但我只完成了83个文件的检查,大约花了一个小时。我有办法让C ++自动读取所有这些文件吗?C ++也必须首先将每个文件都更改为.txt文件,以便我可以在屏幕上打印有意义的文本。

奥兹尔

Boost库对于这些类型的文件/文件系统操作非常丰富。请检查下面的代码。基本上,这将转到您保留所有doc文件的文件夹(ws),并循环访问其中的所有文件。该代码假定文件夹“ ws”只有文件,没有文件夹。有了文件名后,就可以对其进行各种操作。

我不明白为什么要将扩展名更改为txt,但是其中包含几行代码。更改扩展名不会影响其内容。

#include <sstream>
#include <iostream>
#include <boost/filesystem.hpp>

namespace fs = boost::filesystem;

int main(){

    // ref : https://theboostcpplibraries.com/boost.filesystem-paths

    // ws : workspace where you keep all the files
    fs::path ws = fs::path(getenv("HOME")) / "ws";

    // ref : https://theboostcpplibraries.com/boost.filesystem-iterators
    fs::directory_iterator it{ws};

    while (it != fs::directory_iterator{}){
        std::cout << "Processing file < " << *it << " >" << std::endl;
        // ... do other stuff

        // Parse the current filename into its parts, then change the extension to txt
        // ref : https://theboostcpplibraries.com/boost.filesystem-paths
        std::stringstream ss;
        ss << (ws / fs::path(*it).stem()).native() << ".txt";

        fs::path new_path(ss.str());

        std::cout << "Copying into < " << new_path << " >" << std::endl;

        // ref : http://www.boost.org/doc/libs/1_53_0/libs/filesystem/doc/reference.html
        fs::copy_file(*it++, new_path, fs::copy_option::overwrite_if_exists);
    }

    return 0;
}

你可以这样编译:

g++ -std=c++14 -o main main.cc -lboost_filesystem -lboost_system

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有一种方法可以'tail -f'文件夹?

有没有一种方法可以通过Java中的VFS设置远程文件夹的权限?

有没有一种方法可以在PhpStorm中搜索文件夹(目录)?

有没有一种方法可以逐行读取Excel文件

有没有一种方法可以读取C#中的多个文本框

有没有一种方法可以提供文件下载而无需从Java路径中读取文件?

有没有一种方法可以检查Dropbox中的文件/文件夹是否具有共享链接而不创建链接?

有没有一种方法可以在Spring外部公开要通过Internet访问的文件夹?

有没有一种方法可以强制Maven增量复制资源文件夹更改?

有没有一种方法可以禁用Windows自动选择文件夹模板?

有没有一种方法可以更改Visual Studio Code的扩展文件夹位置?

在Windows上,有没有一种方法可以将选定的文本作为文件夹打开?

有没有一种方法可以自动要求PR作者从分支/分支删除文件夹?

有没有一种方法可以轻松设置文件夹使用的图标?

有没有一种方法可以在../sdk/tools文件夹之外执行android命令?

有没有一种方法可以写入同一文件夹中的多个文件?

有没有一种方法可以使用ClassLoader和getClass()方法从res文件夹中获取文件

Intershop:有没有一种方法可以从ISML的属性文件中读取值?

有没有一种方法可以将文件设置为仅在GODOT中读取

有没有一种方法可以将存档的logback的.gz日志文件存储在单独的文件夹中?

有没有一种方法可以使用用户输入批量重命名文件夹中的文件?

有没有一种方法可以模拟Java中的C ++“朋友”概念?

有没有一种方法可以在Verilog中定义类似C的结构

有没有一种方法可以检测c ++中的汉字?(使用升压)

有没有一种方法可以让函数在 C 中返回指针?

有没有一种简单的方法可以读取包含特定短语的特定文件夹?

有没有一种方法可以快速更改文件夹中所有文件的所有文件扩展名?

有没有一种方法可以使用python中该文件名的子文本将文件从一个文件夹复制到另一个文件夹?

有没有一种方法可以计算IO活动(文件访问,读取的字节)?