错误 C2065:"文件名":未声明的标识符

error c2065: 'filename' : undeclared identifier

本文关键字:标识符 未声明 文件名 错误 C2065      更新时间:2023-10-16
#include <iostream>
#include <ostream>
#include <istream>
#include <ostream>
#include <fstream>
#include <sstream>
#include <string>
#include <iomanip>    

void GetOutputFileStream(std::ofstream * fout, std::string filename);
void PrintStatistics(std::ostream & fout,
    int numUsed,
    int numNew,
    double newTotalPrice,
    double newTotalMileage,
    double usedTotalPrice,
    double usedTotalMileage);

int main()
{
double newTotalPrice = 33333;
double newTotalMileage = 44444;
double usedTotalPrice = 22222;
double usedTotalMileage = 99999;
int numUsed = 2;
int numNew = 3;
std::ofstream fout; // 'f'ile out - fout
std::string filename = "statistics.txt";
GetOutputFileStream(&fout, filename);
// Print to screen
PrintStatistics(std::cout,
    numUsed,
    numNew,
    newTotalPrice,
    newTotalMileage,
    usedTotalPrice,
    usedTotalMileage);
// Print to file
PrintStatistics(fout,
    numUsed,
    numNew,
    newTotalPrice,
    newTotalMileage,
    usedTotalPrice,
    usedTotalMileage);

std::cout << "Press ENTER to continue";
std::cin.get();
return 0;
}
void GetOutputFileStream(std::ofstream * fout, std::string filename)
{
    fout->open(filename, std::ios::out);
}
void PrintStatistics(std::ostream & fout,
int numUsed,
int numNew,
double newTotalPrice,
double newTotalMileage,
double usedTotalPrice,
double usedTotalMileage)
{
}

PrintStatistics 是空的,因为我想在开始编写函数之前修复此错误。

我一直收到:错误C2065:"文件名":未声明的标识符

但是,每当我尝试测试 GetOutputFileStream(&fout,文件名(时;使用 int main(( 中的示例机制来确保其功能,如下所示:

std::ofstream fout; // 'f'ile out - fout
std::string filename = "newFile.txt";
GetOutputFileStream(&fout, filename);
fout << "This is my new file!n";
fout << "This is on a new line!";
fout.close();

我没有收到任何错误,并且该函数的行为符合其预期。谁能指出我正确的方向?谢谢。

不是filename给你带来麻烦。在使用以下函数之前,无需定义它们:

void GetOutputFileStream(std::ofstream * fout, std::string filename);
void PrintStatistics( ... );

您需要对它们进行原型设计,或者在使用它们之前定义它们。有关更多信息,请参阅此处。

以下是实际的编译器错误。

这是相同的功能,具有一种修复它们的方法。