我试图计算文件中的行数,但我的计数器每次打印出0

时间:2016-02-19 21:43:39

标签: c++

#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;


}

主:

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

    ifstream file;

    get_input (file);

    return 0;
}

我将其更改为std :: string,但计数器仍打印出0.我从具有2列的文件中获取int数据。我还需要计算文件中的行数。

1 个答案:

答案 0 :(得分:2)

您有多个问题。 正如其他人提到的,你实际上并没有打开任何文件。

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

而是尝试

if (!ifile.is_open())

它会显示你没有打开任何东西。 一旦打开文件就这样;

ifile.open(filename);

您的代码应该可以使用,但是我无法查看您在哪里检查换行。我会把它作为练习让你跟进。尝试搜索std :: getline。