gpt4 book ai didi

c++ - 一般处理文件流

转载 作者:行者123 更新时间:2023-11-28 01:06:13 25 4
gpt4 key购买 nike

我想一般地使用文件流。也就是说,我想“针对接口(interface)而不是实现进行编程”。像这样:

  ios * genericFileIO  = new ifstream("src.txt");
getline(genericFileIO, someStringObject);//from the string library; dont want to use C strings
genericFileIO = new ofstream("dest.txt");
genericFileIO -> operator<<(someStringObject);

这可能吗?我不擅长继承。给定 io 类层次结构,我如何实现我想要的?

最佳答案

你的意思是:

void
pass_a_line(std::istream& in, std::ostream& out)
{
// error handling left as an exercise
std::string line;
std::getline(in, line);
out << line;
}

这可以与任何 std::istreamstd::ostream 一起使用,如下所示:

// from a file to cout
// no need to new
std::ifstream in("src.txt");
pass_a_line(in, std::cout);

// from a stringstream to a file
std::istringstream stream("Hi");
std::ofstream out("dest.txt");
pass_a_line(stream, out);

这就是您的示例所做的,并且是针对 std::istreamstd::ostream 接口(interface)进行编程的。但这不是泛型编程;那就是面向对象的编程。

Boost.Iostreams 可以使类适应 std::[i|o|io]stream,并使用泛型编程实现这一点。

关于c++ - 一般处理文件流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5959832/

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