2016-09-19 29 views
0

我試圖閱讀有多少數字在文本文件中,因爲總數沒有定義。 我想要做的是編寫一個while循環來讀取文件,直到沒有更多的元素可以讀取。在while循環中,cin將讀取元素並將其推回到矢量數據中。但是「我」沒有在範圍內定義。我如何在範圍內聲明它,或者是否有更好的方法?如何在範圍內聲明?

void read_vector(vector<int> &data) { 

    cout << "Using read function!" << endl; 
    //int i = data.size(); 
    while (data.size() != 0){ 
     cin >> data[i]; 
     data.push_back(data[i]); 
    } 

} // read_function() 

感謝您的幫助!

+0

投票結束,因爲不清楚。我會*猜測*迄今爲止的答案都是正確的。但是所提供的代碼沒有多大意義,它可能是任何事情,真的。 –

+0

如果從文件中讀取,爲什麼'cin'? – user4581301

回答

2

如果您不知道輸入中有多少個數字,則可以使用while(cin>>temp)來讀取所有數字,直到達到EOF或無效標記(非整數)爲止。 所以你不需要變量i。只需創建一個臨時的int讀取輸入和push_back它進入vector

int temp; 
while (cin>>temp){ 
    data.push_back(temp); 
} 
+4

這是猜測,應該是一個評論。 –

+0

@CaptainGiraffe:不,評論*不是猜測,除非猜測可以爲以後的答案提供更多信息(並且不足以自行解決問題)。嘗試的答案,猜測或其他,只是爲了答案,如果錯誤的話他們可能會被低估。 –

0

如果你想聲明和初始化一個名爲i變量,那麼你做

int i = 0; 

然而,data[i]是行不通的,因爲在向量沒有元素呢。您需要使用data.push_back()才能添加元素。由於push_back()將元素添加到列表的末尾,因此根本不需要索引變量。所以宣言是不必要的。

+1

「向量中沒有元素」是純粹的猜測。你的心靈感應電路當然可能比我的更好,但不幸的是它沒有功能。但我懷疑它,因爲它是同一個製造商。 –

+0

@ Cheersandhth.-Alf這似乎很可能是因爲OP正在編寫一個函數來讀取數據到矢量中。 –