我知道这是一个非常具体的问题.我正在使用unix机器上的g ++编译器编译c ++代码.我有以下一行代码来读取在C++中指定为参数的文本文件:test.cc
int main(int argc, char *argv[])
{
ifstream inputfile(argv[1]);
}
Run Code Online (Sandbox Code Playgroud)
现在用g ++编译后,我将其称为:
./test file.txt
Run Code Online (Sandbox Code Playgroud)
但是,如果我想把它称为,我应该怎么做
./test <file.txt
Run Code Online (Sandbox Code Playgroud)
简而言之,如何使用默认输入/输出读取文件
您应该检查参数以main查看是否有给该程序的参数.如果是,则可以将其用作文件,否则使用std::cin.
这是一个例子:
void do_something(istream &input)
{
// Read some stuff from the input
}
int main(int argc, char *argv[])
{
if (argc == 1)
do_something(cin);
else if (argc == 2)
do_something(ifstream(argv[1]));
else
{
cout << "Error: Must supply a file\n";
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
我调用另一个函数来读取和处理输入的原因是因为你不能分配流,但必须使用引用或指针.将单独的任务放在单独的函数中也是很好的,因为它将提高代码的可读性.