【发布时间】:2020-05-02 08:00:32
【问题描述】:
我正在尝试从文件中读取数据并将其数据存储在我的链表中。我遇到的问题是,当我读取包含第二个地址的人的信息时,我的函数仅使用包含两个地址的数据更新我的链表。注意:打印我的链接列表时,它是相反的顺序,因为在每个节点之前。注意底部的 5 个打印语句如何包含 1 个地址,这些是我从文件中检索的前 5 行。一旦函数到达包含两个地址的第 6 行,它就无法使用仅包含 1 个地址的数据更新我的列表。但是,它会继续更新我的列表中包含 2 个地址的两个数据。
void AddressBook::readFile(string fileName) {
ifstream f(fileName);
string firstName = "", lastName, phoneNumber, buildingNumber, street, city, state, zipCode, buildingNumber_2, street_2, city_2, state_2, zipCode_2, entry;
bool twoAddr = false;
if (!f.is_open()) { die("file not open"); }
while (f >> entry) {
if (isdigit(entry[0])) {
buildingNumber_2 = entry;
f >> street_2 >> city_2 >> state_2 >> zipCode_2;
addEntry(Person(firstName, lastName, phoneNumber, Address(buildingNumber, street, city, state, zipCode), Address(buildingNumber_2, street_2, city_2, state_2, zipCode_2)));
twoAddr = true;
}
else {
if (firstName != "" && !twoAddr) {
addEntry(Person(firstName, lastName, phoneNumber, Address(buildingNumber, street, city, state, zipCode)));
twoAddr = false;
}
firstName = entry;
f >> lastName >> phoneNumber >> buildingNumber >> street >> city >> state >> zipCode;
}
}
}
【问题讨论】: