从文本文件读取类对象(C++)
Reading from a text file to class objects (C++)
我有一个关于代码的问题。我想从文本文件中获取信息,并将该信息分配到类对象中。稍后我将使用来自对象的信息来编写程序。
我的文本文件如下:
984763 A 20 18
762613 A 19 17
587123 A 22 16
897654 D 85 19
其中第一列表示ID#、Type、处理时间1、处理时间2。
这是我的代码:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class trucks {
private:
int ID;
string Type;
double feeder_pt;
double axle_pt;
public:
void getID (int);
void getType (string);
void getfeeder (double);
void getaxle (double);
};
void trucks::getID(int ID)
{}
void trucks::getType (string Type)
{}
void trucks::getfeeder (double feeder_pt)
{}
void trucks::getaxle (double axle_pt)
{}
int main ()
{
ifstream myfile("sequence.txt");
int i=0;
int ID;
string Type;
double feeder_pt;
double axle_pt;
for(int i=0; i<5; i++)
{
trucks truck[i];
truck[i].getID(ID);
truck[i].getType(Type);
truck[i].getfeeder(feeder_pt);
truck[i].getaxle(axle_pt);
myfile>>ID>>feeder_pt>>axle_pt;
}
// to test only
cout<< ID << endl;
cout<< axle_pt << endl;
cout<< Type << endl;
cout<< axle_pt << endl;
}
输出给了我文本文件(984763)中的第一个元素,其余的都没有。看起来文件正在打开,但我的代码有问题。请帮忙吗?
谢谢你,
在编写代码时,了解您正在编写的内容和原因非常重要。但在这里,让我给你举一个例子:
删除了每个#include之前的额外TAB,用于美观
使用命名空间std删除,不需要。
已删除private:,类成员默认为private。
固定类成员外壳,使它们彼此一致。
已将字符串类型更改为字符类型,因为它包含单个字符。将double改为int,因为该文件包含整数。更改了getXX函数的签名,如果它们是为了"得到",那么它们应该返回一个值,并且不接受任何参数。对它们进行内联编码,然后它们返回相应的私有成员值。为了保持一致,还对它们进行了重命名。添加了集合函数,内联。
将等级卡车重命名为卡车,因为它代表一辆卡车。
只申报过一次可变卡车。
删除了int i=0;因为它已经在for循环中声明;
把i++改成++i,稍微好一点。已将id、type、feeder_pt和axle_pt变量声明移动到循环内部。在"myfile>>…"中添加类型以读取它以及
删除了重复的"cout<<axle_pt"添加了cout<lt;馈线_ pt添加了输出整个卡车阵列的代码。
#include <iostream>
#include <fstream>
class Truck {
int id;
char type;
int feeder_pt;
int axle_pt;
public:
int getID() { return id; }
char getType() { return type; }
int getFeeder() { return feeder_pt; }
int getAxle() { return axle_pt; }
void setID(int id) { this->id = id; }
void setType(char type) { this->type = type; }
void setFeeder(int feeder_pt) { this->feeder_pt = feeder_pt; }
void setAxle(int axle_pt) { this->axle_pt = axle_pt; }
};
int main ()
{
std::ifstream myfile("sequence.txt");
Truck trucks[4];
for(int i=0; i<4; ++i)
{
int id;
char type;
int feeder_pt;
int axle_pt;
myfile >> id >> type >> feeder_pt >> axle_pt;
trucks[i].setID(id);
trucks[i].setType(type);
trucks[i].setFeeder(feeder_pt);
trucks[i].setAxle(axle_pt);
}
// to test only
for(int i=0; i<4; ++i)
std::cout << "ID: " << trucks[i].getID() << "tType: " << trucks[i].getType() << "tFeeder: " << trucks[i].getFeeder() << "tAxle: " << trucks[i].getAxle() << std::endl;
}
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何返回一个类的两个对象相加的结果
- 使用std::函数映射对象方法
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 构造对象的歧义
- 使用"std::unordereded_map"映射到"std::list"对象