我有一个程序,有5个垃圾类实例,垃圾有3个变量,我需要从数据文件中更新。第一个是字符数组,另两个是整数。除了更新int变量外,其他都可以工作,我不知道如何实现这一点,因此非常感谢您的帮助。我的代码:
#include <iostream>
#include <cctype>
#include <cstring>
#include <fstream>
#include <iomanip>
using namespace std;
class Garbage {
public:
void writeData();
void updateFromFile( ifstream & file );
private:
char name[40];
int num1;
int num2;
};
void Garbage::writeData() {
cout << name << ", " << num1 << ", " << num2 << endl;
}
void Garbage::updateFromFile ( ifstream & file ) {
if ( !file.eof() ) {
file.getline(name, STRLEN);
/*
Int variables from Garbage class need to be updated here
*/
}
}
void readFile() {
ifstream infile("data.txt");
for(int i = 0; i < sizeof(garbages)/sizeof(garbages[0]); i++) {
garbages[i].updateFromFile(infile);
}
}
Garbage garbages[5];
int main() {
readFile();
for(int i = 0; i < sizeof(garbages)/sizeof(garbages[0]; i++) {
garbages[i].writeData();
}
return 0;
}
“data.txt”的数据结构如下:
lorem A
10 20
ipsum B
20 30
dolor C
30 40
sit D
40 50
amet E
50 60
lorem是字符数组(可能包括空格!),10是num1,20是num2,依此类推。由于这是一项学校作业,我无法更改c++代码的结构或数据文件结构。如果不需要额外的预处理指令就可以实现这一点,那将是更好的选择。
非常感谢您的任何意见!
编辑:
修复了类成员函数命名不一致和sizeof()使用不当的问题。我还在数据结构的名称字段中添加了一个可选字母,表明名称可能包含空格,因此我不能依赖“>”操作员,必须使用getline。