3

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

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

“错误 C2275:‘std::ofstream’:非法使用这种类型作为表达式”

“智能感知:不允许类型名称”

“IntelliSense:标识符“out”未定义”

#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;
}

现在真的很晚了,我只是对自己做错了什么感到茫然。

4

2 回答 2

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' : undeclared identifier”,因为编译器还不知道 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;
}

在这种情况下,您使用as 参数调用。 outputout

于 2012-11-05T12:06:12.293 回答
2

由于您将自己描述为初学者,因此我会相应地回答,并希望以教育的方式回答。以下是正在发生的事情:将和视为智能变量类型(即使您知道类是什么,为了逻辑清晰fstream,也可以这样想)。像任何其他变量一样,您必须在使用前声明它。声明后,该变量可以保存兼容的值。变量类型用于保存文件。它的所有变体都具有相同的含义,只是它们所做的不同。ofstreamifstreamfstream

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

希望这可以帮助

于 2012-11-05T13:23:36.657 回答