2016-02-19 91 views
-5
#include <iostream> 
#include <fstream> 

using namespace std; 

void get_input (ifstream& ifile){ 

    std::string filename; 
    cout << "Input filename:"; 
    cin >> filename; 

    if (ifile.fail()){ 
     cout << "File is not found"<< endl; 
    } 

    int ID, score, count = 0; 

    while (1){ 
     ifile >> ID >> score; 
     if (ifile.eof()) break; 
     ++count; 
    } 


    ifile.close(); 

    cout << ID << endl; 
    cout << count << endl; 
    cout << score << endl; 


} 

主要時間來算在我的文件中的行,但我的櫃檯打印張數出0:我想每一個

int main(int argc, const char * argv[]) { 

    ifstream file; 

    get_input (file); 

    return 0; 
} 

我改變它的std :: string,但計數器仍然打印out 0.我從具有2列的文件中獲取int數據。我還需要計算文件中的行數。

+0

使用'std :: string'來接收文件名。 – AndyG

+3

你實際上沒有打開文件。 –

+0

我建議閱讀[this](http://stackoverflow.com/help/how-to-ask)關於如何提出一個好問題的頁面。 「不工作」不是一個明確的問題陳述,告訴我們將來什麼是錯誤的或對人們有用。 –

回答

2

您有多個問題。正如別人提到的,你實際上並沒有打開任何文件。

if (ifile.fail()) <<this is failing & does not get entered 

而是嘗試

if (!ifile.is_open()) 

,它會告訴你沒有打開任何東西。 一旦你像這樣打開文件;

ifile.open(filename); 

您的代碼應該可以工作,但是我看不到您要檢查行返回的位置。我會把它作爲一個練習讓你跟進。嘗試搜索std :: getline。