【发布时间】:2015-10-13 00:23:08
【问题描述】:
我正在尝试将文本文件中的数据读取到结构数组中。 for 循环的第一次迭代会正确读取并显示所有内容,直到达到布尔值,之后的每次迭代都不会按预期显示。最后的布尔值是否会导致文件的整个其余部分被错误地读取?或者可能是由 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
【问题讨论】:
-
我们能看到您从中提取的文件吗? (此外,如果这是家庭作业,您可能应该检查您的书和/或与您的教授交谈。我们只会为您指出正确的方向,但这里更有经验的程序员不会给您代码,以免干扰你的学习。)
-
欢迎来到 StackOverflow!在此处包含Minimum Working Example 肯定会帮助您解决问题。至少,由于涉及到
inventoryDatabase,因此很高兴知道您如何定义和初始化它。 -
感谢您的回复,并相应地进行了一些修改。这是针对学校作业的,但是除了程序必须具有的功能之外,没有给出任何实际要求。我从导师那里得到的唯一回应是,“我不确定,我会做一些阅读,看看我能找到什么。”尽管我一定会在明天问他。
-
好吧,至少你和他谈过了。这就是我们所要求的。 :) 你会惊讶于有多少学生来到这里并要求我们为他们做作业。
标签: c++ arrays structure fstream