2012-10-25 300 views
0

我是新來的c + +我試着寫一個代碼,讀取文本文件的整數,並逐行保存在不同的變量中的每個整數。 我遇到了語法問題以及如何安排代碼。基本上,文本文件每行包含4個整數,這些值將被讀取到類行星的座標和id,如下所示。我知道代碼beloe是不完整的,但這是第一次使用C++編程,需要幫助。請你不需要用行星或任何東西來解釋這個。我只需要一個大概的瞭解閱讀文本文件C++

#include <iostream> 
#include <fstream> 



using namespace std; 

class planet{ 
    public : 
    float x_coordinates; 
    float y_coordinates; 
    float z_coordinates; 
    int id; 
}; 




planet*generate_planet(istream &fin) 
{ 
    planet *x= new planet; 
    fin >> x->id >> x->x_coordinates >> x->y_coordinates >> x->z_coordinates; 

    return (x); 
} 
void report_planet(planet &p) 
{ 

cout<<"planet "<<p.id<<" has coordinates (" << p.x_coordinates<<","<<  p.y_coordinates<<","<< p.z_coordinates<<")"<<endl; 
} 
int main() 
{ 
planet p; 
planet *x; 
ifstream fin("route.txt"); 
generate_planet(fin); 
report_planet(*x); 


    return 0; 
} 
+0

一些問題:您不保存返回的星球*從generate_planet傳遞給report_planet()。你泄漏了這個記憶。然後,您將一個ofstream傳遞給report_planet(),而不是generate_planet()返回的任何內容。 –

回答

3

你的代碼有一些錯誤。

請注意,在此行中: fin>>x->id>>x->x_coordinates>>x->y_coordinates>>x->y_coordinates;您可以寫入兩次到x->y_coordinate而不是x->z_coordinate

此外,您void report_planet(planet &p)函數接收planet &作爲參數,但你通過它fin這是一個時間ofstream

的另一件事是你要讀取的文件,不寫一個,因此,使用的ofstream是錯誤的,您應該使用ifstream代替。

您的代碼是否可以編譯?

祝你好運。

+0

感謝您的意見,它編譯,但其運行不正常,我會添加更正你說 – Tobey

+0

有一些更多的錯誤和設計問題在這裏。您應該刪除您用new創建的所有內容。另外,我建議「create_planet」應該是您的星球類的構造函數類型,「report_planaet」是成員函數。請查看C++中的一些面向對象的基礎知識。類沒有結構。 – TWE

+0

好的,謝謝 – Tobey