簡體   English   中英

for循環,讀取和寫入文件的困難

[英]difficulty with for loops, reading from and writing to files

我目前正在為我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循環來讀取infile文件,但是從來沒有像這樣。 我已經完全站住了,並且在此問題上需要一些認真的幫助,因為我似乎在此問題上找不到很多。 任何幫助都將不勝感激! 這是我當前的代碼:

#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進行可變長度記錄。

看了上面約翰的評論后,我可以看到為什么記錄長度是可變的。 您需要提供將決定應讀取多少個字段的邏輯。 我想我現在可以回想起我200級CS課中的這種練習。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM