打开给定文件夹中的所有文本文件

用户名

我试图打开我给程序提供的文件夹和子文件夹中的所有文本文件作为参数并在其中搜索文本。现在,如果我使用。而不是路径,它会像我想要的那样打开文件。但是,只要将计算机中的任何其他文件夹作为参数(而不是目标文件所在的文件夹)作为参数,它就不会打开文件。我该如何解决?我有Windows,并且正在使用MinGw作为编译器。

#include <iostream>
#include <cstdlib>
#include "boost/program_options.hpp"
#include "boost/filesystem.hpp"
#include <iterator>
#include <fstream> 
namespace po = boost::program_options;
using namespace std;
using namespace boost;
using namespace boost::filesystem;



int main (int argc, char* argv[]) {

    // Declare the supported options.
    po::options_description desc("Allowed options");
    desc.add_options()
    ("folder", po::value<std::string>(), "find files in this folder")
    ("text", po::value<std::string>(), "text that will be searched for");

    po::variables_map vm;
    po::store(po::parse_command_line(argc, argv, desc), vm);
    po::notify(vm);

    filesystem::path current_dir (vm["folder"].as<string>());
    filesystem:: recursive_directory_iterator end_itr;//recursive lisatud

    for ( filesystem::recursive_directory_iterator itr( current_dir );
         itr != end_itr;
         ++itr )
    {
        //cout << itr->path ().filename () << endl;
        if(itr->path().filename().extension()==".txt"||itr->path().filename().extension()==".docx"||itr->path().filename().extension()==".doc"){
            ifstream inFile(itr->path().filename().string());
            //ifstream inFile("c:\\somefile.txt"); //this would open file

            cout<<itr->path().filename().string()<<endl; //this prints out all the file names without path, like  somefile2.txt for example
            while ( inFile )
            {
                std::string s;
                std::getline( inFile, s );
                if (inFile){
                    std::cout << s << "\n";
                    if(s.find(vm["text"].as<string>())!= string::npos){
                        cout<<"found it"<<endl;
                        }
                    }
            } 
        }
    }


    return EXIT_SUCCESS;
}

这是问题所在:

ifstream inFile(itr->path().filename().string())

或者更具体地说,itr->path().filename()仅返回名称的文件,而不是完整的路径到该文件。如果该文件不在程序的当前工作目录中,则打开时将遇到问题:找不到该名称的文件,或者找到具有相同名称的本地文件,该文件将不是该文件你真的想要!

在执行递归目录迭代时,当前工作目录不会更改。

itr->path()返回boost::filesystem::path取消引用时的实例...该类的文档可在此处找到我相信你想做的是

ifstream inFile(itr->path().c_str());

但是,这可能不是规范或最有效的方法。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何自动打开给定文件夹中的所有文本文件?

来自分类Dev

使用文件夹名称在所有文件夹中创建空文本文件

来自分类Dev

如何使用Python脚本修改文件夹中的所有文本文件

来自分类Dev

如何逐步“ cd”到文本文件中的所有文件夹?

来自分类Dev

如何逐步“ cd”到文本文件中的所有文件夹?

来自分类Dev

我需要在特定日期创建的所有子文件夹中找到所有文本文件,将其打开,然后将内容复制到单个文本文件中

来自分类Dev

在 MATLAB 中打开不在当前文件夹中的文本文件

来自分类Dev

如何读取文件夹中的所有文本文件并根据后缀或前缀过滤显示

来自分类Dev

Powershell-分隔符后删除所有内容-在文件夹中找到的文本文件中

来自分类Dev

为文件夹中的文本文件编号

来自分类Dev

在Mac OS X中打开给定路径的文件夹

来自分类Dev

如何读取文件夹中存在的所有Zip文件,并创建包含所有内容的新文本文件

来自分类Dev

如何检查文本文件的文件夹中是否有重复的URL

来自分类Dev

批处理脚本可将文件夹中的所有文件列出为文本文件,而无需重复

来自分类Dev

使用批处理脚本仅打开文件夹中的非零文本文件

来自分类Dev

列出X天之前的文件夹和子文件夹中所有文件的完整路径,并将结果保存在文本文件LINUX中

来自分类Dev

打开文件夹python中的所有文件

来自分类Dev

在特定目录中的文本文件中指定创建文件夹/子文件夹/文件

来自分类Dev

在文件夹中分割文本文件

来自分类Dev

从文本文件获取文件夹名称

来自分类Dev

使用文本文件重命名文件夹中的批处理文件

来自分类Dev

PowerShell逐行读取文本文件并在文件夹中查找丢失的文件

来自分类Dev

从部分名称在文本文件中的文件夹中选择 wav 文件

来自分类Dev

是否有用于启动文件夹的文本文件?

来自分类Dev

如何在Python中读取压缩文件夹中的文本文件

来自分类Dev

在文件夹中的多个文本文件中查找和替换

来自分类Dev

查找文本文件中的所有字谜词

来自分类Dev

显示文本文件中的所有数据

来自分类Dev

列出C ++目录中的所有文本文件

Related 相关文章

  1. 1

    如何自动打开给定文件夹中的所有文本文件?

  2. 2

    使用文件夹名称在所有文件夹中创建空文本文件

  3. 3

    如何使用Python脚本修改文件夹中的所有文本文件

  4. 4

    如何逐步“ cd”到文本文件中的所有文件夹?

  5. 5

    如何逐步“ cd”到文本文件中的所有文件夹?

  6. 6

    我需要在特定日期创建的所有子文件夹中找到所有文本文件,将其打开,然后将内容复制到单个文本文件中

  7. 7

    在 MATLAB 中打开不在当前文件夹中的文本文件

  8. 8

    如何读取文件夹中的所有文本文件并根据后缀或前缀过滤显示

  9. 9

    Powershell-分隔符后删除所有内容-在文件夹中找到的文本文件中

  10. 10

    为文件夹中的文本文件编号

  11. 11

    在Mac OS X中打开给定路径的文件夹

  12. 12

    如何读取文件夹中存在的所有Zip文件,并创建包含所有内容的新文本文件

  13. 13

    如何检查文本文件的文件夹中是否有重复的URL

  14. 14

    批处理脚本可将文件夹中的所有文件列出为文本文件,而无需重复

  15. 15

    使用批处理脚本仅打开文件夹中的非零文本文件

  16. 16

    列出X天之前的文件夹和子文件夹中所有文件的完整路径,并将结果保存在文本文件LINUX中

  17. 17

    打开文件夹python中的所有文件

  18. 18

    在特定目录中的文本文件中指定创建文件夹/子文件夹/文件

  19. 19

    在文件夹中分割文本文件

  20. 20

    从文本文件获取文件夹名称

  21. 21

    使用文本文件重命名文件夹中的批处理文件

  22. 22

    PowerShell逐行读取文本文件并在文件夹中查找丢失的文件

  23. 23

    从部分名称在文本文件中的文件夹中选择 wav 文件

  24. 24

    是否有用于启动文件夹的文本文件?

  25. 25

    如何在Python中读取压缩文件夹中的文本文件

  26. 26

    在文件夹中的多个文本文件中查找和替换

  27. 27

    查找文本文件中的所有字谜词

  28. 28

    显示文本文件中的所有数据

  29. 29

    列出C ++目录中的所有文本文件

热门标签

归档