文件读写
头文件
#include <fstream>
操作
示例程序:文件夹下所有文件中csdn图片链接提取出来
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 
 | #include <bits/stdc++.h>#include <string>
 #include <cstring>
 #include <dirent.h>
 #include <fstream>
 using namespace std;
 
 const char *inFolderPath = "C:\\Users\\60116\\Desktop\\_posts\\";
 
 
 vector<string> res;
 
 void dealwith(string str) {
 if(str.find("csdn") == string::npos) return ;
 
 int pos = str.find("csdn"), startIndex = -1, endIndex = -1;
 while(pos--) {
 if(str.substr(pos, 5) == "https") {
 startIndex = pos;
 break;
 }
 }
 
 while(pos < str.size() && pos++) {
 if(str.substr(pos, 4) == ".png" || str.substr(pos, 4) == ".jpg") {
 endIndex = pos + 4;
 break;
 }
 }
 
 if(startIndex != -1 && endIndex != -1) {
 res.push_back(str.substr(startIndex, endIndex - startIndex));
 }
 return ;
 }
 
 void work(char *inPrefix, char *fileName) {
 res.push_back(fileName);
 
 char inFilePath[500];
 strcpy(inFilePath, inPrefix);
 strcat(inFilePath, fileName);
 
 
 
 
 
 ifstream inFile(inFilePath, ios::in);
 
 if(!inFile.is_open()) {
 cout << "in error" << endl;
 return ;
 }
 
 string line;
 
 
 while(getline(inFile, line)) {
 dealwith(line);
 }
 
 inFile.close();
 }
 
 int main() {
 ofstream outFile("C:\\Users\\60116\\Desktop\\out.txt", ios::out);
 
 if(!outFile.is_open()) {
 cout << "out error" << endl;
 return -1;
 }
 
 DIR *dir;
 struct dirent *ent;
 
 if ((dir = opendir(inFolderPath)) != NULL) {
 int cnt = 0;
 while ((ent = readdir(dir)) != NULL) {
 
 if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0) {
 continue;
 }
 
 char curInFolderPath[500];
 strcpy(curInFolderPath, inFolderPath);
 
 
 
 
 work(curInFolderPath, ent->d_name);
 
 ++cnt;
 
 
 }
 cout << "total: " << cnt << endl;
 closedir(dir);
 } else {
 std::cerr << "cannot open this dir" << std::endl;
 return 1;
 }
 
 for(auto p: res) {
 outFile << p << endl;
 }
 outFile.close();
 
 
 return 0;
 }
 
 
 | 
遍历文件夹下所有文件
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 
 | #include <dirent.h>
 DIR *dir;
 struct dirent *ent;
 
 if ((dir = opendir(inFolderPath)) != NULL) {
 int cnt = 0;
 while ((ent = readdir(dir)) != NULL) {
 
 if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0) {
 continue;
 }
 
 ++cnt;
 }
 cout << "total: " << cnt << endl;
 closedir(dir);
 } else {
 std::cerr << "cannot open this dir" << std::endl;
 return 1;
 }
 
 |