将命令行参数/ fstream传递给函数

时间:2015-02-16 23:06:50

标签: c++ fstream ifstream

我使用文本文件的名称调用我的程序,该文件被放入argv [2& 4](那里有两个文件)。然后我需要将此名称传递给函数。如果ifstream myFile(argv [2])然后传入像void func(ifstream myFile, ifstream myOtherFile)这样的ifstream,或者我应该传入argv [2& 4]本身就像void func(char* nameOne, char* nameTwo)?如果第二种方式,那是我传递给它的正确方法吗?

文件仅在该函数的范围内使用,因此我可以在函数中打开和关闭它们,或打开它们,将它们传递给函数,然后在从函数返回后关闭它们。我只是想知道哪种方式更有意义。感谢

1 个答案:

答案 0 :(得分:2)

RAII是主题C ++资源管理 - 只要有}句柄就可以清理。在您的情况下,本指南建议自动持续时间ifstream,仅限于func范围内,因为它会在销毁时关闭文件。由于ifstream仅限移动,因此您可以将func称为func(ifstream(argv[2]), ifstream(argv[4]))