3

こんにちは、私はc++初心者で、これは私の課題の 1 つで、少し行き詰まっています。これは私のコード全体ではなく、助けが必要なもののほんの一部です。私がやろうとしているのは、その関数を使用してすべてをtextresults.txt というファイルにエクスポートする専用の関数を 1 つ用意することです。したがって、ファイルを開くと「does this work」という行が表示されるはずですが、ファイルを実行すると次のようなエラーが発生します

「エラー C2065: 'out': 宣言されていない識別子」

「エラー C2275: 'std::ofstream': この型を式として不正に使用しています」

「IntelliSense: 型名は許可されていません」

「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' : 宣言されていない識別子」という最初のエラーです。これは、コンパイラがまだ out について認識していないためです。

2番目のフラグメントでは、特定のostream&. 関数を呼び出す代わりに、このコンテキストでは許可されていない関数宣言を行っています。あなたは与えられたでそれを呼び出す必要がありますostream&:

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

この場合、パラメータとして呼び出し ます。outputout

于 2012-11-05T12:06:12.293 に答える
2

あなたは自分自身を初心者だと説明したので、それに応じて、できれば教育的な方法でお答えします. とをスマートな変数型と考えてくださいfstream(クラスが何であるかを知っていても、論理的な明確さのためにそのように考えてください)。他の変数と同様に、使用する前に宣言する必要があります。宣言された後、その変数は互換性のある値を保持できます。変数の型は、ファイルを保持するためのものです。それのすべてのバリエーションは同じことを保持しますが、それらが行うことだけが異なります。ofstreamifstreamfstream

変数を使用してファイルを開き、プログラムで使用してから閉じます。

お役に立てれば

于 2012-11-05T13:23:36.657 に答える