2014-03-07 36 views
-2

該程序停止工作,因爲它沒有正確讀取文本文件。 文本文件具有以下內容:如何讀取C++中的文本文件中的每個整數?

1 2 
1 3 
1 4 
2 4 
3 4 
0 0 
1 2 
3 2 

我想從文本文件中得到兩個圖表和0 0分隔兩個。

在此先感謝。

int main() 
{ 
    ifstream file2; 
    file2.open("ass3.txt"); 
    int i=1; 
    int t1; 
    int t2; 
    file2>>t1>>t2; 
    Graph* graph1; 
    Vertex* u; 
    Vertex* v; 
    cout<<t1<<" "<<t2;//this is giving value -2 and some other random number. 
    while(t1==0 && t2==0){ 
     if(t1==i){ 
      u=addVertex(t1); 
      insert(u,graph1); 
      i++; 
     } 
     if(t2==i){ 
      u=addVertex(t1); 
      insert(u,graph1); 
      i++; 
     } 
     *u = graph1->vertices[t1]; 
     *v = graph1->vertices[t2]; 
     addEdge(u, v, true); 
     addEdge(v, u, false); 
     file2>>t1>>t2; 
    } 
    Graph* graph2; 
    i=0; 
    while (!file2.eof()){ 
     file2>>t1>>t2; 
     if(t1==i){ 
      u=addVertex(t1); 
      insert(u,graph2); 
      i++; 
     } 
     if(t2==i){ 
      u=addVertex(t1); 
      insert(u,graph2); 
      i++; 
     } 
     *u = graph1->vertices[t1]; 
     *v = graph1->vertices[t2]; 
     addEdge(u, v, true); 
     addEdge(v, u, false); 
    } 
return 1; 
} 
+0

到目前爲止,您已經給了我們一個問題的描述。說這個程序的「不起作用」不足以理解錯在哪裏。 – 0x499602D2

+0

我在代碼中放了一個cout,並寫出了輸出。如果我能得到更具體的信息,我會自己解決問題。 – user3001017

+0

目標是讓問題儘可能清晰和緩和。這包括將代碼的大小減小到可能重現您描述的問題的最簡單示例。 [見這裏](http://stackoverflow.com/help/mcve)。 – 0x499602D2

回答

0

你必須在第一個錯誤的條件while循環,嘗試設置

while(t1!=0 && t2!=0){ 

,而不是

while(t1==0 && t2==0){ 

你們用什麼條件,你立刻跳到第二個循環,整個文件放在第二個圖中,導致第一個文件中未初始化的值。

希望這會有所幫助..

+0

感謝您告訴我關於這個錯誤,但同樣的問題仍然存在 – user3001017

+0

然後它可能是一個問題與圖函數有關,改變條件代碼似乎對我工作正常(我刪除了圖表部分代碼你沒有後只留下文件交互,並調試它工作正常) – powder

+0

我刪除了所有的代碼後,cout和初始化t1和t2爲0現在它給0 0作爲輸出,這意味着file2 >> t1 >> t2;沒有改變任何東西。 – user3001017

相關問題