[英]difficulty with for loops, reading from and writing to files
我目前正在为我210班的一个项目工作,该项目涉及一个文件,我需要从该文件中提取全名,航班类型,乘客类型,会员级别,行李数量以及这些行李的大小/重量。 军事奖励和里程俱乐部,免费行李箱和超大行李箱,乘客类型等变得非常复杂...等...
该文件看起来完全像这样:
Mark Spitz E RP NO 2 21.5 24.2 18 6 30 26 20.5 7.5
Michael Jordan B RP M4 3 53.7 14.1 9.2 15.0 24.2 5.2 9.3 16.2 109.2 12.1 9.6 23.0
Dorothy Hamill E RP NO 2 55.8 27.1 17.2 18.6 15.0 35.2 21.3 9.2
这表明马克·斯皮兹(Mark Spitz)是普通的旅客旅行经济舱,不是里程俱乐部的成员。 他正在检查两个袋子:第一个袋子重21.5磅,长24.2英寸,宽18英寸,高6英寸。 第二个重30磅,长26英寸,宽20.5英寸,高7.5英寸。
我以前曾经使用过for循环来读取infile文件,但是从来没有像这样。 我已经完全站住了,并且在此问题上需要一些认真的帮助,因为我似乎在此问题上找不到很多。 任何帮助都将不胜感激! 这是我当前的代码:
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include <cmath>
using namespace std;
int main ()
{
int newline, firstname, lastname, flighttype, status, membership, numberofbags=0, regularpass, militarypass, militaryorder, member1, member2, member3, member4, nomember;
ifstream infile;
infile.open("data3.txt");
ofstream outfile;
outfile.open("charges.txt");
infile >> newline;
for(int a=0; a<newline; a++)
{
infile >> firstname >> lastname;
outfile << firstname <<" " << setw(10) << left << lastname;
}
return 0;
}
如前所述,使用了错误的类型。 您正在将字符串读取为整数变量,但这将无法正常工作。
for(int a=0; a<newline; a++)
您遍历文件的方式没有意义。 请参阅下面的参考。
另外...在尝试移至下一条记录之前,您并未阅读所有字段。 您的数据显示的某些记录具有比其他记录更多的字段。 那会导致您的技术无效。 如果练习要读取的长度与该长度相同的记录是正确的代码,但是如果要读取长度可变的记录,则此代码将不起作用。 您将需要使用getline进行可变长度记录。
看了上面约翰的评论后,我可以看到为什么记录长度是可变的。 您需要提供将决定应读取多少个字段的逻辑。 我想我现在可以回想起我200级CS课中的这种练习。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.