c++ ofstream对象作为变量[已关闭]

cnh2zyt3  于 2023-02-06  发布在  其他
关注(0)|答案(2)|浏览(182)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

昨天关门了。
Improve this question
我正在尝试根据cpp中的一个文件名创建多个文件。使用ofstream进行此操作,目前无法实现。
如果有人能帮我我会很感激的。
我在这里写下:

static std::ofstream text1;
static std::ofstream text2;

class trial{
public:
  if(situation == true) {
    document_type = text1;
  }
  if(situation == false) {
    document_type = text2;
  }

  document_type << "hello world" << "\n";
}

ofstream对象作为变量。

ijxebb2r

ijxebb2r1#

赋值 * 复制 * 对象,并且不可能创建流的副本。您只能拥有对流的引用,并且不能重新分配引用。
相反,我建议您将对所需流的引用传递给trial构造函数,并将该引用存储在对象中:

struct trial
{
    trial(std::ostream& output)
        : output_{ output }
    {
    }

    void function()
    {
        output_ << "Hello!\n";
    }

    std::ostream& output_;
};

int main()
{
    bool condition = ...;  // TODO: Actual condition

    trial trial_object(condition ? text1 : text2);
    trial_object.function();
}

还要注意,我在类中使用了普通的std::ostream,这允许您使用 any 输出流,而不仅仅是文件。

hgncfbus

hgncfbus2#

不能在类作用域中使用语句,只能使用声明。
在任何情况下,您都需要使用一个引用变量来完成您所尝试的操作,例如:

std::ofstream& document_type = situation ? text1 : text2;
document_type << "hello world" << "\n";

相关问题