2014-12-26 64 views
0

我想閱讀以下內容:和單獨的陣列的每個值存儲在C++

rima doha 44881304 20 30 10 10 20 10102 10102 
andrew ny  123456  12 12 13 14 15 01020 03040 

並將它們存儲在單獨的陣列,對其進行編輯,然後再存儲到同一個文件。

這是我嘗試代碼:

ifstream infile; 
infile.open("D:\\customers.txt"); 
string names[100]; 
string addresses[100]; 
int tn[100]; 
int numCalls[100]; 
int trunkCalls[100]; 
int numMobCalls[100]; 
int isdnNum[100]; 
int dueD[100]; 
int paymentD[100]; 

int numOfPpl = 0; 

int numOfPpl = 0; 

for(int i=0; i<100; i++){ 
     infile >> names[i] >> addresses[i]>>tn[i]>>numCalls[i]>>trunkCalls[i]>> numMobCalls[i]>> isdnNum[i]>>dueD[i]>>paymentD[i]; 
     numOfPpl++; 
} 

//Code where some values were edited 



ofstream outfile("D:\\customers.txt"); 


for(int i=0; i<numOfPpl; i++) 
{ 
    outfile<<names[i] << "\t" <<addresses[i] << "\t" <<tn[i]<<"\t" <<numCalls[i]<<"\t" 
     <<trunkCalls[i]<<"\t"<<numMobCalls[i]<<"\t"<<numMobCalls[i]<<"\t"<<isdnNum[i]<<"\t"<<dueD[i]<<"\t"<<paymentD[i]<<endl; 
} 

outfile.close(); 
infile.close(); 

問題是,前兩行被正確地存儲,但也有許多文件中的隨機值。我該如何解決?

+0

文件中有多少行? – P0W

+0

您可能正在獲取垃圾值,他們是否是大負數?我會假設你有問題,因爲你正在循環我 - > 100,所以如果文件中沒有100行,空行將變成垃圾值。 –

+0

請不要另一個。你是否在StackOverflow中搜索「C++讀取文件列」? –

回答

1

你的代碼有一些問題。

首先,聲明numOfPpl兩次。擺脫第二計數。其次,你有9個輸入類別(姓名,地址等),但是你的文本文件每行有10個。這將拋棄整個計劃。

第三個問題是你會在customers.txt中有100行嗎?如果沒有,你應該使用一個命令來查看下一行,以確定下面是否有另一行。如果文本文件中沒有100行,使用while或do/while循環可能會更好。像

while(infile){ 
    // retrieve your data 
    infile.peek(); 
} 

東西或利用for循環

for(int i = 0; infile; i++){ 
    // retrieve your data 
    infile.peek(); 
} 

可能會是一個更好的循環。同樣,如果你不會有100行,for循環會給你null輸出,因爲沒有任何數據被放入數組元素中。我相信這應該糾正你的問題。

你應該注意的另一件事是在行尾有一個額外的空間。這也會讓你的程序輸出關閉。