提问人:mpgiii 提问时间:11/18/2021 最后编辑:mpgiii 更新时间:11/19/2021 访问量:106
是否可以在一个 fstream 中使用两个文件,其中一个文件的末尾被第二个文件替换?
Is it possible to use two files in one fstream, where the end of one file is replaced by the second file?
问:
我想连接两个文件,然后将组合的文件传递给一个库,该库接收单个 istream 并解析它。我目前的解决方案是编写一个临时文件,将两个原始文件的内容写入该文件,然后打开此临时文件进行读取,然后删除临时文件。
这是我目前的解决方案:
ifstream f_template("file_1.txt");
if (f_template.fail()) {
return ERR;
}
ifstream f_port("file_2.txt");
if (f_port.fail()) {
return ERR;
}
ofstream concat("tmp.txt");
if (concat.fail()) {
return ERR;
}
concat << f_template.rdbuf() << f_port.rdbuf();
f_template.close();
f_port.close();
concat.close();
ifstream res("tmp.txt");
if (res.fail()) {
return ERR;
}
// now pass res to the parser.
我一直在试图集思广益,想出一个更优雅的解决方案,但我似乎找不到办法。我最初的想法是,当第一个文件命中 EOF 时,有某种处理程序,以便将其重定向到读取第二个文件,而不是将 EOF 发送到解析器,但我不确定如何实现这一点。有人有什么建议吗?
编辑:通过将两个文件写入字符串流并传递库,可以实现结果。谢谢大家的帮助。
答: 暂无答案
评论
fstream
fstream
istream
istream
std::stringstream