gpt4 book ai didi

c++ - 读取多个文件,并为每个文件保留一组数据。

转载 作者:行者123 更新时间:2023-11-28 03:17:04 26 4
gpt4 key购买 nike

我想读取一个文件并将其标题保存在一个变量中,这样当我重写(覆盖)该文件时,我可以只粘贴标题并继续打印修改后的文件的其余部分。标题,在我的例子中,没有改变,所以我可以打印出来。这是我在类里面的代码:

.
.
.
static char headerline[1024];

static int read(const char* filename){
fget(var,...;
for (int i=0; i<1024; ++i){
headerline[i] = var[i];
}
.
.
.
}

int write(filename){
fprintf(filename, headerline);
//printing rest of file
.
.
.
}

代码成功打印了它在读取文件时保存的行。但是,我的问题是它保存了上次读取的文件的标题。因此,如果我打开了两个文件并且我想保存第一个文件,那么第二个文件的标题将写入第一个文件。我怎样才能避免这种情况?如果静态 map 是一种解决方案,那究竟是什么?

其次,什么是打印整个标题(5-8 行)而不是像我现在所做的那样只打印一行的最佳方法。

最佳答案

所以,需要解决的问题是你正在读取多个文件,并且想为每个文件保留一组数据。

有很多方法可以解决这个问题。其中之一是连接 filenameheader .正如评论中所建议的那样,使用 std::map<std::string, std::string>将是一种方法来做到这一点。

static std::map<std::string, std::string> headermap;



static int read(const char* filename){
static char headerline;
fget(var,...;
for (int i=0; i<1024; ++i){
headerline[i] = var[i];
}
headermap[std::string(filename)] = std::string(headerline);

...

int write(filename){
const char *headerline = headermap[std::string(filename)].c_str();
fprintf(filename, headerline);
// Note the printf is based on the above post - it's wrong,
// but I'm not sure what your actual code does.

关于c++ - 读取多个文件,并为每个文件保留一组数据。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16543042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com