我对我的代码有疑问。我想从文本文件中获取信息并将该信息分配给类对象。我将在稍后使用来自对象的信息来编写程序。
我的文本文件如下所示:
df <- df[order(factor(df$b, levels ='ws_12')),]
df[!duplicated(df$a),]
# a b
#1 A ws_12
#3 B ws_12
#4 C ws_12
#6 D ws_12
#7 E dr_12
其中第一列表示ID#,类型,处理时间1,处理时间2.
这是我的代码:
984763 A 20 18
762613 A 19 17
587123 A 22 16
897654 D 85 19
输出为我提供了文本文件中的第一个元素(984763),其余部分则没有。似乎文件正在打开,但我的代码有问题。有什么帮助吗?
谢谢,
答案 0 :(得分:0)
编写代码时,了解您所编写的内容及其原因非常重要。 但在这里,让我举个例子:
在每个#include之前移除了额外的TAB,为了漂亮
使用命名空间std删除,不需要。
删除了private:,默认情况下,类成员是私有的。
固定类成员外壳,使它们彼此一致。
将字符串类型更改为char类型,因为它包含单个字符。 将double更改为int,因为该文件包含整数。 更改了getXX函数的签名,如果它们意味着“获取”它们应该返回一个值并且不带参数。 对它们进行内联编码,并返回相应的私有成员值。 也将它们重命名为一致。 添加了内联函数集。
将卡车重新命名为卡车,因为它代表了一辆卡车。
仅宣布变辆车一次。
删除int i = 0;因为它已在for循环中声明;
将i ++改为++ i,它更好一点。 将id,type,feeder_pt和axle_pt变量声明移动到循环内部。 在“myfile&gt;&gt; ...”中添加了类型以便将其读取
删除了重复的“cout&lt;&lt; axle_pt” 添加了cout&lt;&lt; feeder_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;
}