使用Boost读取多个文件C ++

时间:2017-02-02 09:34:02

标签: c++ boost

我正在尝试使用Boost库读取多个文件的内容。 我已经成功列出了文件夹中的所有文件,但我仍然试图阅读它们......

data

3 个答案:

答案 0 :(得分:2)

使用ifstream打开文件,然后getline()将其内容逐行读入string行:

#include <fstream>
#include <string>

std::string line;
std::ifstream ifs(itr->path().string().c_str());
if (ifs) {
    while (std::getline(ifs, line)) {
        // Process line
    }
}
else {
    std::cerr << "Couldn't open " << itr->path().string() << " for reading\n";
}

答案 1 :(得分:1)

您可以使用C ++标准库来读取文件。

逐行读取文件的最简单方法是

#include <fstream>
#include <string>

// ... and put this inside your loop:

if (std::ifstream inFile(current_file.c_str())) {
    std::string line;
    while (std::getline(inFile, line)) {
         // Process line
    }
}

答案 2 :(得分:0)

对于那些想要整个代码的人。

#include <iostream>
#include "boost/filesystem.hpp"
#include <fstream>
#include <string>


using namespace std;
using namespace boost::filesystem;

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

path p ("/home/baptiste/workspace/booost");

directory_iterator end_itr;


for (directory_iterator itr(p); itr != end_itr; ++itr)
{

    if (is_regular_file(itr->path())) {

        string current_file = itr->path().string();
        cout << current_file << endl; }

                            std::string line;
                            std::ifstream ifs(itr->path().string().c_str());
                            if (ifs) {
                            while (std::getline(ifs, line)) {
                        cout<< line;
                    }
    }
    else {
        std::cerr << "Couldn't open " << itr->path().string() << " for reading\n";
    }

}

}