在for循环、读写文件时遇到困难

difficulty with for loops, reading from and writing to files

本文关键字:遇到 文件 读写 for 循环      更新时间:2023-10-16

我目前正在为我的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循环从文件中读取,但从来没有像这样。我已经完全停止,需要一些认真的帮助与这个问题,因为我似乎找不到太多的。任何和所有的帮助是非常感激!下面是我当前的代码:

#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++)

你循环遍历文件的方式没有意义。

ifstream参考

也……在尝试移动到下一个记录之前,您不会读取所有字段。您的数据显示一些记录具有比其他记录更多的字段。那会导致你的技巧不起作用。如果练习是读取相同长度的记录,那么这是正确的代码,但如果是读取可变长度的记录,那么这段代码将不起作用。您需要使用getline来做可变长度的记录。

看了上面John的注释后,我明白了为什么记录长度是可变的。您需要提供逻辑来决定应该读取多少字段。我想我现在还能回忆起在我的200级cs课上的这种练习。