我使用文本文件的名称调用我的程序,该文件被放入argv [2& 4](那里有两个文件)。然后我需要将此名称传递给函数。如果ifstream myFile(argv [2])然后传入像void func(ifstream myFile, ifstream myOtherFile)
这样的ifstream,或者我应该传入argv [2& 4]本身就像void func(char* nameOne, char* nameTwo)
?如果第二种方式,那是我传递给它的正确方法吗?
文件仅在该函数的范围内使用,因此我可以在函数中打开和关闭它们,或打开它们,将它们传递给函数,然后在从函数返回后关闭它们。我只是想知道哪种方式更有意义。感谢
答案 0 :(得分:2)
RAII是主题C ++资源管理 - 只要有}
句柄就可以清理。在您的情况下,本指南建议自动持续时间ifstream
,仅限于func
范围内,因为它会在销毁时关闭文件。由于ifstream
仅限移动,因此您可以将func
称为func(ifstream(argv[2]), ifstream(argv[4]))
。