使用参数argv[1]命令行打开文本文件



如何用argv[1]命令行替换ifstream infile("jobs.txt");

这是我的主要功能:

int main()
{   
int arrSize=0;
vector<Process> procs;
vector<Process> proc;
int element1, element2, element3;
char comma;
ifstream infile("jobs.txt");

if (!infile.is_open()) {
cerr << "Can't open file" << endl;
}
else {
while (infile >> element1 >> comma >> element2 >> comma >> element3)
{
Process proc{element1, element2, element3};
procs.push_back(proc);
}
}
arrSize=procs.size();
cout << procs.size() << endl;
int n = sizeof(proc) / sizeof(proc[0]);

findavgTime(procs.data(), static_cast<int>(procs.size()));
}

这里有一个可以使用的骨架:

#include <iostream>
#include <fstream>
int main(int argc, char *argv[])
{
if (argc < 2)
{
std::cout << "Usage: foo <input filename>n";
return 1;
}
std::ifstream in(argv[1]);
if (!in)
{
std::cout << "Could not open file: '" << argv[1] << "'n";
return 1;
}
//Do important stuff here.
}

值得注意的是

int n = sizeof(proc) / sizeof(proc[0]);

不会给您提供std::vector的大小。使用proc.size(),就像使用procs一样。

就这么做?不过,您实际上需要将命令行参数添加到main的签名中。

int main(int argc, char** argv) {
//...
if(argc <= 1) { //Prevents out-of-bounds access to argv array.
return 1;
}
ifstream infile(argv[1]);
//...
}

最新更新