- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <string>
- #include <unistd.h>
- #include <dirent.h>
- using namespace std;
- constexpr int deleteLineNum = 29;//需要删除每个文件中的行数
- int main(int argc, char *argv[]) {
- DIR *dp;
- dirent *dirp;
- vector<string> filenames; //用于记录当前目录中的文件名
- if ((dp = opendir(argv[1])) == NULL)
- cerr << "can't open " << argv[1];
- while ((dirp = readdir(dp)) != NULL) {
- string filename = dirp->d_name;
- string filetype;
- if(filename.size() > 3)
- filetype = filename.substr(filename.size()-2,2);
- if(filetype == "cc") //文件名是cpp时
- filenames.push_back(dirp->d_name);
- }
- closedir(dp);
- for(const auto &filename : filenames) {
- ifstream in(filename);
- vector<string> lines;
- string line;
- //将文件按行存入到一个vector中
- while(getline(in, line)) {
- lines.push_back(line);
- }
- //删除前deleteLineNum行
- if(lines.size() > deleteLineNum) {
- decltype(lines.begin()) beg = lines.begin();
- auto last = beg + deleteLineNum;
- lines.erase(beg, last);
- }
- //存到文件中
- ofstream out(filename);
- for(auto line : lines) {
- out << line << "\\n";
- }
- }
- return 0;
- }
- //该片段来自于http://www.codesnippet.cn/detail/230620149855.html
来源: http://www.codesnippet.cn/detail/230620149855.html