【发布时间】:2022-11-08 05:24:08
【问题描述】:
这是我的第一个问题,所以我可能会错过“正确的结构”。
无论如何,我有一个头文件,有一个函数。此函数 (void readFile()) 在 cpp 文件中定义。在这个定义中,我有很多重复的代码。
如果它在 main 中,我只需声明一个新函数,在其中定义可重复的,然后每次调用该函数。但由于它位于非主 cpp 文件中,因此我在此过程中遇到问题。
基本上,我的函数所做的是逐个字符地读取文件,并根据文本将数据保存到不同的对象中。
我的代码如下所示:
source.open("bookings.txt", std::ios::in);
char c;
source.get(c);
while (c != '|'){
CurrentID.push_back(c);
source.get(c);
}
object.setID(CurrentID)
此代码重复自身,仅替换“object.setID”行。我尝试声明函数“search(std::ifstream x, char y, std::string z);”有定义
void Search(std::ifstream x, char y, std::string z){
x.get(y); // next after |
while (y != '|'){
z.push_back(y);
x.get(y);
}
}
但是,如果我尝试在“void readFile()”定义中调用此函数,如下所示:
// First block as a repeatable
source.get(c);
while (c != '|'){
CurrentID.push_back(c);
source.get(c);
}
object->setID(CurrentID)
CurrentID.clear();
// second block as a function, with repeatable code commented out
void Search(std::ifstream quelle, char c, std::string &CurrentID);
/* source.get(c);
while (c != '|'){
CurrentID.push_back(c);
source.get(c);
}*/
object->setPrice(stof (CurrentID));
CurrentID.clear();
它从第一个块中的“CurrentID.clear()”直接跳转到第二个块中的“object->setPrice”,忽略了 void Search 函数的存在。 有什么建议如何使函数工作,或者以其他方式删除重复的代码?
【问题讨论】:
标签: c++ function c++11 repeat redundancy