gpt4 book ai didi

c++ - 将两个文件读入 vector 首先 while 循环有效但第二个只迭代一次?

转载 作者:行者123 更新时间:2023-11-27 23:38:41 27 4
gpt4 key购买 nike

在开始读取另一个文件之前,是否应该使用某个函数?我使用了 File1.close 但这没有帮助,我的第二个 while 循环从 (File2 >> a) 读取只迭代一次。我不确定如何解决这个问题。控制台输出只有我文件中的第一个值,然后停止。我读入 vector 的文件位于存储项目的正确位置。我做错了什么?

int main()
{
int a;
vector<int> EmpId1, EmpId2, hours;
vector<double> Payrate, Paycheck;
ifstream File1, File2;
ofstream PayRoll("PayRoll.txt");

// Open the file
File1.open("HoursWorked.txt");
if (!File1)
{
cout << "The file was not found." << endl;
return 1;
}

// Read and print every word already in the file
while (File1 >> a)
{
EmpId1.push_back(a);
File1 >> a;
hours.push_back(a);
}

for (unsigned int count = 0; count < EmpId1.size(); count++)
{
cout << EmpId1[count] << "***1****" << hours[count] << endl;
}

// Clear end of file flag to allow additional file operations
File1.clear();
File1.close();
//Close if file cannot be found
File2.open("HourlyRate.txt");
if (!File2)
{
cout << "The file was not found." << endl;
return 1;`enter code here`
}

// Read and print every word already in the file
while (File2 >> a)
{
EmpId2.push_back(a);
File2 >> a;
Payrate.push_back(a);
}

for (unsigned int count = 0; count < EmpId2.size(); count++)
{
cout << EmpId2[count] << "****2***" << Payrate[count] << endl;
}

最佳答案

您的变量 Payrate 是一个 double 的 vector 。
为了向其提供要存储的新值,您使用 File >> a
但是变量 a 的类型是 int;例如此时File2的内容是12.34,那么只会提取12来初始化a.
此整数值被静默转换为 double 并存储在 Payrate 中。

此时File2的剩余部分以.34开头。
下一次迭代,再次尝试提取一个整数,以便将其放入 EmpId2
但这失败,因为整数不能以字符 . 开头,因此第二个 while 循环停止。

关于c++ - 将两个文件读入 vector 首先 while 循环有效但第二个只迭代一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57249982/

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