c++ - 如何返回标准文件流

标签 c++ g++ std

我正在为我的应用程序开发一个“文件系统”来处理文件操作,例如列出、创建、删除文件和目录,以及获取文件数据。我想为此使用 std::fstream,因为它比 C 文件处理程序更安全、更容易格式化。但是我不能从函数返回一个流对象(它没有一个拷贝c'tor)并且当我试图返回引用时我收到一个警告(我没有警告并不意味着那么多但我正在尝试修复我的应用程序中所有可能的警告,直到现在我都做了所有这些):“警告:返回对临时的引用”。我能做些什么?如果有人遇到这种情况并找到了更好的处理方法,请告知。

编辑:

std::ofstream &Filesystem::createFile(const String &str) {
   std::ofstream file(str);
   return file;
}

这就是我要实现的目标。但由于警告,我正在寻找另一种方式。

提前致谢,
加西姆加西姆扎达

最佳答案

使用智能指针,类似的东西可能会起作用(或更新的 std::unique_ptr 之一,等等)

std::auto_ptr<std::iostream> foo()
{
  return std::auto_ptr<std::iostream>(new fstream(...));
}

关于c++ - 如何返回标准文件流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6706212/

相关文章:

c++ - UnaryFunction 在 std::for_each 中看起来如何

c++ - STD::string 作为动态分配对象的成员参数

c++ - 下面的 trie 代码中发生了什么

c++ - 将 < >'' 转换为 sql_oracle

c++ - 对于在 Linux 中正常构建的 C++ 程序,VS2010 中的编译失败

c++ - 为什么 stack<const string> 不能在 g++ 中编译?

再次使用 C++ 单元测试框架

c++ - WNDPROC声明问题,从C转C++

c++ - Mac OSX 上的 Clang 链接错误

c++ - std::vector 的 setter