将文件传递给函数

Passing a file into a function

本文关键字:函数 文件      更新时间:2023-10-16

我正在尝试创建一个将文件传递给函数的程序。该函数应该检测文件中有多少行。我认为我没有正确地将文件传递到我的函数中,我尝试了几种不同的方法。如有任何帮助,我将不胜感激。

#include <iostream>
#include <fstream>
#define die(errmsg) {cerr << errmsg << endl; exit(1);} 
using namespace std;
int num_of_lines(ifstream file)
{
    int cnt3;
    string str;
    while(getline(file, str))cnt3++;
    return(cnt3);
}

int main(int argc, char **argv)
{
    int num_of_lines(ifstream file);
    string file;
    file = argv[1];
    if(argc == 1)die("usage: mywc your_file"); //for some reason not working
    ifstream ifs;
    ifs.open(file);
    if(ifs.is_open())
    {
        int a;
        cout << "File was openedn";
        a = num_of_lines(file);
        cout <<"Lines: " << a << endl;
    }
    else
    {
        cerr <<"Could not open: " << file << endl;
        exit(1);
    }
    ifs.close();
    return(0);
}

这个函数有两个问题。首先,应该通过引用传递流。第二,你刚刚忘记初始化你的计数器。

int num_of_lines( ifstream &file )
{
    int cnt3 = 0;
    string str;
    while( getline(file, str) ) cnt3++;
    return cnt3;
}

另一件事是你传递file给它(这是一个字符串)而不是ifs。将调用更改为:

a = num_of_lines( ifs );