gpt4 book ai didi

c++ - 使用函数打开文件,然后让其他函数使用该文件?

转载 作者:行者123 更新时间:2023-11-28 04:04:16 26 4
gpt4 key购买 nike

我有一个计算机科学作业,它要求我有一个单独的函数来打开文件,然后另一个函数将处理该文件中的数据,然后其他一些函数对这些数据进行一些操作。无论如何,我在如何让其他功能使用该打开的文件方面遇到了麻烦。带有“&”或“*”的引用让我感到困惑,我不确定是否必须使用一个,当然,尽管我很确定我至少必须将某些内容传递给下一个函数。处理文件的主要目的是打开它(openFile),然后使用另一个函数(getData)将数据排序到两个不同的数组中。一个用于名称,一个用于旁边的金额。该文件将被写为:

Johnson 6000
Brown 5000
Miller 4000
Duffy 2500
Robson 1800

我的代码如下:

'''

#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;

void openFile();
void getData();
void computePercentages();
void sortVotes();
void display();
void displayWinner();

int main() {
openFile();
getData();

return 0;
}

void openFile(){
string fileName;
cout << "Enter the name of the file to open: ";
cin >> fileName;
ifstream file;
file.open(fileName.c_str());
}

void getData(){
int count = 0;
while(!file.eof()){
string names[count];
int votes[count];
cin >> names[count];
cin >> votes[count];
count ++;
}
}

'''

最佳答案

一种方法是让 openFile 返回文件流对象,然后将其传递给 getData

ifstream openFile()
{
string fileName;
cout << "Enter the name of the file to open: ";
cin >> fileName;

ifstream file(fileName);

return file;
}

void getData(ifstream &file)
{
int count = 0;
while(file){
string names[count];
int votes[count];
cin >> names[count];
cin >> votes[count];
count ++;
}
}

int main()
{
ifstream file = openFile();
if (file)
{
getData(file);
}
}

请注意,此答案不会解决您代码中的其他问题。例如,在 getData 中,您使用的是非标准的可变长度数组,不适用于所有编译器,并且每次通过 while< 构造和销毁这些数组 循环。

关于c++ - 使用函数打开文件,然后让其他函数使用该文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59012915/

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