for循环,读取和写入文件的困难

时间:2013-04-03 15:54:57

标签: c++ for-loop file-io

我目前正在为我的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循环来读取infiles,但从来没有这样。 我已经完全停下来,需要一些严肃的帮助解决这个问题,因为我似乎无法找到它。 非常感谢任何和所有的帮助! 这是我的代码当前:

#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;
}

1 个答案:

答案 0 :(得分:0)

如前所述,使用了错误的类型。您正在将字符串读入整数变量,但这不起作用。

for(int a=0; a<newline; a++)

通过文件循环的方式没有意义。请参阅下面的参考资料。

ifstream reference

另外......在尝试移动到下一条记录之前,您没有阅读所有字段。您的数据显示一些记录包含的字段多于其他记录。这会导致你的技术不起作用。如果练习是读取长度相同的记录,那么这是正确的代码,但如果要读取长度可变的记录,则该代码将无效。您需要使用 getline 来执行可变长度记录。

在看到上面的 John 评论后,我可以看到为什么记录长度是可变的。您需要提供将决定应读取多少字段的逻辑。我想我现在可以在200级cs课程中回想起这种类型的练习。