gpt4 book ai didi

c++ - 将文本文件中的数据存储在结构数组 C++ 中

转载 作者:行者123 更新时间:2023-11-28 02:19:16 25 4
gpt4 key购买 nike

我正在尝试将文本文件中的数据读入结构数组。 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com