我正在尝试将文本文件中的数据读入结构数组。 for 循环的第一次迭代读取并正确显示所有内容,直到达到 bool 值,此后的每次迭代都不会按预期显示。最后的 bool 值是否导致整个文件的其余部分被错误读取?或者可能是 getline 引起的问题?
int main()
{
groceryProduct inventoryDatabase[25];
ifstream fin("inventory.txt");
if (!fin)
{
cout << "File could not be located.";
}
string itemName;
for (int index = 0; index < 25; index++)
{
getline(fin, inventoryDatabase[index].itemName, '\n');
fin >> inventoryDatabase[index].itemNumber;
fin >> inventoryDatabase[index].itemPrice;
fin >> inventoryDatabase[index].membershipPrice;
fin >> inventoryDatabase[index].payByWeight;
cout << inventoryDatabase[index].itemName << endl;
cout << inventoryDatabase[index].itemNumber << endl;
cout << inventoryDatabase[index].itemPrice << endl;
cout << inventoryDatabase[index].membershipPrice << endl;
cout << inventoryDatabase[index].payByWeight << endl;
}
return 0;
};
结构:
struct groceryProduct
{
double itemPrice;
double membershipPrice;
double itemWeight;
int itemQuantity;
string itemNumber;
string itemName;
bool payByWeight;
};
输出:
Apple
P0000
0.85
0.8
204 (expected output of 'false' instead of 204)
第一次迭代后循环每次迭代的输出:
-9.25596e+61
-9.25596e+61
204
谢谢,如果您需要更多信息,请告诉我。
文件:
Apple
P0000
.85
.80
false
Orange
P0001
.95
.85
false
Lemon
P0002
.65
.60
false
最佳答案
你需要告诉你的流 bool 值是文本
fin >> boolalpha >> inventoryDatabase[index].payByWeight
您在第一个 bool 输入后看到垃圾数据,因为在流中设置了故障位,并且在重置之前不会有进一步的输入。这会导致您的数组数据保持未初始化状态。
关于c++ - 将文本文件中的数据存储在结构数组 C++ 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33092239/