gpt4 book ai didi

c++ - 如何使用带有指针和字符串参数的函数正确获取文件流的输入?

转载 作者:行者123 更新时间:2023-11-30 05:11:09 24 4
gpt4 key购买 nike

我正在处理 C++ 的文件分配,并且很难区分 main 中的测试代码和我应该在我的函数中执行的逻辑。例如,我需要实现以下功能:

这是我用来测试的代码:

int main()
{
std::string filename = "cars.txt";
std::ifstream fin;
bool isOpen = GetInputFileStream(&fin, filename);
if (isOpen == false)
{
std::cout << "Couldn't find file " << filename << "!" << std::endl;
}
else
{
double newTotalPrice = 0;
double newTotalMileage = 0;
double usedTotalPrice = 0;
double usedTotalMileage = 0;
int numUsed = 0;
int numNew = 0;

AnalyzeFile(fin, numUsed, numNew, newTotalPrice, newTotalMileage,
usedTotalPrice, usedTotalMileage);
PrintStatistics(std::cout, numUsed, numNew, newTotalPrice, newTotalMileage,
usedTotalPrice, usedTotalMileage);
}
}

这是我需要实现的功能(众多功能之一):

bool GetInputFileStream(std::ifstream * fin, std::string filename)
{

}

调用者将提供一个指向输入文件流对象的指针。我将使用此对象打开一个输入文件名称文件名。如果该文件不存在,则通过返回 false 来提醒用户。

最佳答案

您可以使用一些特定于平台的代码(access() in unistd.h 对于 unix 系统)来判断文件是否存在,或者如果您无法打开它,则假设它不存在(参见 std::ifstream::good())。

请参阅 std::ifstream::open() 的文档:

void open (const char* filename, ios_base::openmode mode = ios_base::in);

void open (const string& filename, ios_base::openmode mode = ios_base::in);

第二个函数仅在 C++11 中可用。

所以,如果您不关心文件打开失败的原因:

fin->open(filename);
return fin->good();

关于c++ - 如何使用带有指针和字符串参数的函数正确获取文件流的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45242588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com