C++在Unix上读/写文件

use*_*927 3 c++

我知道这是一个非常具体的问题.我正在使用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)

简而言之,如何使用默认输入/输出读取文件

Som*_*ude 8

您应该检查参数以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)

我调用另一个函数来读取和处理输入的原因是因为你不能分配流,但必须使用引用或指针.将单独的任务放在单独的函数中也是很好的,因为它将提高代码的可读性.

  • @ user1035927是的应该.来吧,试一试.:) (2认同)