【发布时间】:2013-04-03 15:54:57
【问题描述】:
我目前正在为我的 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;
}
【问题讨论】:
-
"reading and writing too and from files"这毫无意义,请修正。
-
@m0skit0:为什么没有意义?代码打开一个文件并从中读取;它打开另一个文件并写入它,不是吗?剩下的只是“使用英语”,这可能不是 OP 的母语。
-
你已经读过名字了;您需要阅读三个字符字段。然后你需要读取行李数量;对于每个袋子,您需要读取重量、长度、宽度、高度。如果有人没有托运行李会怎样?
-
一些变量(如名称)可能应该是
std::string而不是int。如果您尝试读取错误类型的变量,则流将进入错误状态并拒绝读取更多内容,直到错误被清除。 -
另一个问题是,你接下来阅读的内容取决于你之前阅读的内容。因此,当您阅读行李数量时,您必须阅读该数量的行李重量和尺寸。这可能比您以前必须处理的更复杂,但它并不那么复杂。它只是意味着另一个循环。我敢肯定,您已经掌握了执行此操作的所有技能,但您只需要以一种新的方式将它们组合在一起即可。真的,这就是编程的全部意义。