gpt4 book ai didi

c++ - 从文件中读取值并使用类

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

您好,我无法从名为 money.txt 的输入文件中填充 2 个私有(private)类成员的值。你能告诉我为什么它只读取文件的第一个值(在第一行声明的大小之后)然后不读取其余值吗?如果我的方法不是最好的方法,你能推荐另一种方法来解决这个问题吗?

这是 money.h 文件:

#ifndef money_h
#define money_h
class Money{
public:
void getdollars();
void getcents();
void printdollars();
void printcents();
private:
int dollars[3];
int cents[3];
};
#endif

这是implementation.cpp

#include"money.h"
#include<fstream>
#include<iostream>
using namespace std;
ifstream instream;
void Money::getdollars()
{
instream.open("money.txt");
int s;
instream>>s;
instream>>dollars[0];
instream>>dollars[1];
instream>>dollars[2];
}
void Money:: getcents()
{
instream.open("money.txt");
int s;
instream>>s;
instream>>cents[0];
instream>>cents[1];
instream>>cents[2];
}
void Money:: printdollars()
{
cout<<*dollars;
}
void Money:: printcents()
{
cout<<*cents;
}

这是ma​​in.cppmoney.txt文件

#include"money.h"
#include<iostream>
#include<fstream>
using namespace std;

Money** readMoney(Money** &x , char* filename)
{
int size;
ifstream instream;
instream.open(filename);
instream>>size;
x = new Money*[size];
for(int i = 0;i<size;i++)
{
x[i] = new Money[size];
for(int j = 0;j<size;j++)
{
x[i][j].getdollars();
x[i][j].getcents();
}
}
return x;

}
void printmoney(Money **a,int size)
{
ifstream instream;
int i = 0 , j = 0;
while(i<size && j<size)
{
a[i][j].printdollars();
cout<<" ";
a[i][j].printcents();
cout<<endl;
j++;
}
}
void main()
{
Money** test;
ifstream instream;
readMoney(test,"money.txt");
printmoney(test,3);
}

金钱.txt

3
5 60
2 30
3 21

最佳答案

快速看一下,代码似乎打开了文件“money.txt”三次。第一次在函数 readMoney 中,第二次在 getdollars 中,第三次在 getcents 中。大概就是这个问题。在 readMoney 函数中只打开文件一次,并将打开的流传递给 Money 的实例。

关于c++ - 从文件中读取值并使用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27129779/

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