【发布时间】:2014-10-11 01:37:41
【问题描述】:
对于我的计算机科学课程,我必须创建一个(简单地说)处理员工的程序。到目前为止,我没有任何问题。但是,作业的最后一部分是“创建一个测试程序,该程序处理从文本文件输入的 5 名员工的数组,然后作为员工报告输出到屏幕上。” 我以为这会相对容易,毕竟解析一个文本文档有多难。问题是我需要输入字符串和整数,它们不是任何简单的模式或分隔。我必须输入数据的函数如下所示:
void employeeType::setEmployeeType(string first, string middle, string last,
int month, int day, int year, int ID,
string street, string town, string state, int zip, string county, string country,
int home, int cell, string email,
int sMonth, int sDay, int sYear,
string oStreet, string oTown, string oState, int oZip, string oCounty, string oCountry,
int work, int salary) {//code here..}
以及我从文本文档中输入的内容之一:
William, R, Smith, 8, 24, 1963, 555238911, 12345 Street1, State1, 77123, County1, Country1, 1112223333, 3332221111, email@email.com, 3, 19, 2007, 12345 oStreet1, oTown1, oState1, 77987, oCounty1, oCountry1, 2221113333, 75000
我计划通过检测每个“,”来分隔每个输入,这将结束每个输入。我总是可以对其进行硬编码,以便将某些输入(输入数字 4、5、6、7、10、13、14、16、17、18、22、23 和 24)解析为整数,但这不会看起来非常好,可能有更好的方法来做到这一点。有人有什么建议吗?
我总是可以提供任何需要的额外信息。
【问题讨论】:
-
我会认真考虑将所有这些参数放入
struct并传递对该struct对象类型的引用。 -
在“12345 Street1”之后小镇不见了?
-
另一件事,我在想,如果我在 int 之前添加某种特殊字符(而不是 123,它将类似于 &123)并且在将其存储为字符串之前,我会检查 & 是否为字符串的第一个字符,如果是,它是一个 int。我不明白为什么会这样。绝对不是最佳做法,但对于专注于其他课程的作业,她应该接受。
-
我认为您需要明确地对每种类型进行硬编码。毕竟在某些时候你必须把它们放在一个显式的 C++ 变量中,所以我认为你不能逃避它。即使您将此数据存储为
std::strings(如在属性映射中),也应该逐个字段地进行单独验证。 -
我觉得你的文件格式没问题。我认为您在问题中的建议(您说看起来不太好)是一个很好的建议。