直接贴代码:
count_files_lines.h
#ifndef COUNT_FILES_LINES_H_
#define COUNT_FILES_LINES_H_
#include <string>
#include <vector>
int count_lines(const std::string& filename);
std::vector<int> count_lines_in_files(const std::vector<std::string>& files);
#endif
count_files_lines.cpp
#include <fstream>
#include <algorithm>
#include <iostream>
int count_lines(const std::string& filename)
{
std::ifstream in(filename);
return std::count(std::istreambuf_iterator<char>(in), std::istreambuf_iterator<char>(), '\n');
}
std::vector<int> count_lines_in_files(const std::vector<std::string>& files)
{
std::vector<int> results(files.size());
std::transform(files.cbegin(), files.cend(), results.begin(), count_lines);
// for (const auto& file : files)
// {
// results.push_back(count_lines(file));
// }
return results;
}
int main(int argc, char **argv)
{
auto results = count_lines_in_files({"count_files_lines.h"});
for (auto i : results)
{
std::cout << i << std::endl;
}
return 0;
}
输出结果:11