2013-04-03 56 views
2

我目前正在为我的210课程开展一个项目,该课程涉及一个文件,我需要从中提取全名,飞行类型,乘客类型,会员级别,袋子,以及这些袋子的尺寸/重量。 它变得非常复杂的军事奖励和里程俱乐部,免费袋和超大行李,客运型,等等... ...等for循环的困难,从文件中读取和写入

文件看起来就像这样:

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 

这表明马克施皮茨是一个普通旅客旅游经济舱,并不是里程俱乐部的成员。他正在检查两包:第一包重21.5磅,长24.2英寸,宽18英寸,高6英寸;第二个重30磅,长26英寸,宽20.5英寸,高7.5英寸。

我已经用循环从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; 
} 
+0

*“阅读和写作也来自文件”*这是没有意义的,请修复。 – m0skit0

+3

@ m0skit0:为什么它没有意义?代码打开一个文件并从中读取;它会打开另一个文件并写入它,不是吗?其余的只是'使用英语',这可能不是OP的母语。 –

+0

你已经读过这个名字;你需要阅读三个char字段。那么你需要阅读包的数量;对于每个包,你需要阅读重量,长度,宽度,高度。当有人没有托运行李时会发生什么? –

回答

0

由于正在使用的错误类型之前说明。你正在将字符串读入整数变量,这是行不通的。

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

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

ifstream reference

而且......你是不是在所有领域的阅读试图移动到下一个记录之前。您的数据显示一些记录的字段比其他字段更多。这会导致你的技术无法工作。如果练习是读取长度相同的记录,则这是正确的代码,但如果是读取长度可变的记录,则此代码不起作用。您将需要使用getline来执行可变长度记录。

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