如何通过函数参数使用fstream(特别是ofstream)

时间:2012-11-05 12:02:06

标签: c++

嗨,我是c++初学者,这是我的任务之一,我有点卡住了。这不是我的整个代码,它只是我需要帮助的一小部分。我要做的是有一个函数专用于将具有该函数的所有内容导出到text文件中,该文件名为results.txt。因此,当我打开文件时,应该显示“执行此功能”这一行,但是当我运行该文件时,我会收到类似

的错误
  

“错误C2065:'out':未声明的标识符”

     

“错误C2275:'std :: ofstream':非法使用此类型作为表达式”

     

“智能感知:不允许输入姓名”

     

“智能感知:标识符”输出“未定义”

#include <iostream>
#include <string>
#include <fstream>


using namespace std;

//prototypes
void output(ofstream& out);

int main()
{
output(ofstream& out);
    ifstream in;
    in.open("inven.txt");
    ofstream out;
    out.open("results.txt");
return 0;
}

void output(ofstream& out)
{
out << "does this work?" << endl;
}

现在已经很晚了,我只是在搞清楚我做错了什么。

2 个答案:

答案 0 :(得分:7)

首先,这很好:

void output(ofstream& out)
{
    out << "does this work?" << endl;
}

但是,这不是:

int main()
{
    output(ofstream& out); // what is out?
    ifstream in;
    in.open("inven.txt");
    ofstream out;
    out.open("results.txt");
return 0;
}

这是你得到的第一个错误:“错误C2065:'out':未声明的标识符”,因为编译器还不知道。

在第二个片段中,您希望使用特定ostream&调用输出。您没有调用函数,而是给出了一个函数声明,在此上下文中不允许这样做。您必须使用给定的ostream&

来调用它
int main()
{
    ifstream in;
    in.open("inven.txt");
    ofstream out;
    out.open("results.txt");
    output(out); // note the missing ostream&
    return 0;
}

在这种情况下,您调用 output并以out作为参数。

答案 1 :(得分:1)

既然你把自己描述为一个乞丐,我会相应地回答并希望以教育的方式。以下是正在发生的事情:将fstreamofstreamifstream视为智能变量类型(即使您知道哪些类,为了逻辑清晰度而这样认为)。与任何其他变量一样,您必须在使用之前声明。声明后,该变量可以保持兼容值fstream变量类型适用于保存文件。它的所有变体都保持相同的东西,正如它们所做的那样是不同的。

您可以在程序中使用变量打开文件使用,然后关闭

希望这有帮助