我正在尝试使用Boost库读取多个文件的内容。 我已经成功列出了文件夹中的所有文件,但我仍然试图阅读它们......
data
答案 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";
}
}
}