c++ - for 循环、读取和写入文件有困难

标签 c++ for-loop file-io

我目前正在为我的 210 类(class)开展一个项目,该项目涉及一个文件,我需要从中提取全名、航类类型、乘客类型、成员(member)级别、行李数量以及这些行李的尺寸/重量。 它变得非常复杂,包括军事奖励和里程俱乐部、免费行李和超大行李、乘客类型等……等……

文件看起来完全像这样:

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是普通旅客旅行的经济舱,不是里程俱乐部的成员(member)。他正在检查两个行李:第一个重 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;
}

最佳答案

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

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

您循环遍历文件的方式没有意义。请参阅下面的引用资料。

ifstream reference

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

在看到上面John 的 评论后,我明白了为什么记录长度是可变的。您需要提供逻辑来决定应读取多少字段。我想我现在可以记忆起我的 200 级 CS 类(class)中的这种练习。

关于c++ - for 循环、读取和写入文件有困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15792138/

相关文章:

c++ - 内联结构声明的大小

c++ - 如何将 unique_ptr 用于 pimpl?

python - 在 Python 列表中查找 "x"最大差异

c++ - 为什么这些基于范围的 for 循环不能正常工作?

java - 用户从应用程序登录数据库

python - 我可以使用函数 np.savetxt() 指定不同的小数位吗

Java 并发 hashmap 缺失值

python - 如何将单个位写入python中的文本文件?

c++ - 将 C++ 中内存地址的值打印为十六进制

c++ - 如何向多个线程发送事件信号