// Open the config file
ifstream configfile;
configfile.open("config.txt");
// Check that the file opened correctly
if(!configfile.is_open()) {
cout << "Failed to open config file.\n";
return -1;
};
// Read the filename
while(getline(configfile, filename, ',')) {
// Read the file
}
然后,在while循环中,可以打开一个文件名为的文件。
// Read the contents of the file
ifstream temporaryfile;
temporaryfile.open(filename);
// Check that the file opened correctly
if(!temporaryfile.is_open()) {
cout << "Failed to open " << filename << "\n";
continue;
}
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
using namespace std;
int main(void) {
// Open the config file
ifstream configfile;
configfile.open("config.txt");
// Check that the file opened correctly
if(!configfile.is_open()) {
cout << "Failed to open config file.\n";
return -1;
};
// Read the config file
string filename;
while(getline(configfile, filename, ',')) {
// Read the contents of the file
ifstream temporaryfile;
temporaryfile.open(filename);
// Check that the file opened correctly
if(!temporaryfile.is_open()) {
cout << "Failed to open " << filename << "\n";
continue;
}
// Read the file
string content;
while(getline(temporaryfile, content)) {
cout << content << "\n";
}
// Close the file
temporaryfile.close();
}
// Close the file
configfile.close();
}
// Open the config file
ofstream configfile
configfile.open("config.txt", ios::app); // IOS:APP stands for append, meaning we add to the end of the file.
// Check that the file opened correctly
if(!configfile.is_open()) {
cout << "Failed to open config file.\n";
return -1;
};
// Write the filename to the end of the config file.
configfile << file << ',';
// Close the file.
configfile.close();
1条答案
按热度按时间cyej8jka1#
我认为你的问题有两个方面:首先,“找到”所有要读取的文件,因为文件名是在运行时而不是编译时提供的,其次,阅读所有文件。
“查找”文件
你的代码会产生一堆不同的文本文件,例如sarah.txt和kevin.txt。程序需要知道这些文件的名字,在运行时之间,我将通过使用配置文件来合并这些文件。你可以有一个永远不会改变名称的文件,比如“config.txt”。每次你创建一个新文件并写入它,你把文件名写到配置文件中。2然后当需要加载所有文件时,你只需要读取配置文件。3你可以用一个分隔符,例如,用来分隔不同的文件名,作为逗号或任何其他字符,你知道不会出现在文件名。下面的例子“config.txt”:
正在阅读文件
我会使用while循环来获取配置文件中的每一行,在while循环中,使用另一个while循环来读取这些文件中的所有数据。请看下面的代码。
首先,打开配置文件并确保它正确打开。
然后你可以用while循环读取所有的文件名,如果我们给予getline()函数文件名和分隔符,它就会得到下一个文件名。
然后,在while循环中,可以打开一个文件名为的文件。
现在只剩下读取文件了。
然后我们就可以关闭文件了。阅读的完整代码如下。
我猜你也希望能够将每个文件中的密码和用户名分开,你可以像我对getline()做的那样做,除了你在每个文本文件而不是配置文件上做这件事,你只需要确保使用一个不会被用作密码或用户名的分隔符,比如换行符('\n')。
正在写入配置文件
写配置文件很容易。只要添加新的文件名,例如,你在代码中提供的变量文件,后面跟一个逗号。见下面的例子。
如果你还有什么问题,尽管问吧!