4

我正在尝试从作为输入传递的命令行读取文件。不,不是文件名。我不希望用户在命令行上输入文件名,这样我就可以像这样打开它:fopen(argv[1], "r");

我期待这样的文件:myprogram < file_as_input。所以应该进入 argv 的是文件的内容。我如何在 C/C++ 中做到这一点?

4

2 回答 2

11

当像这样调用程序./a.out < file时,文件的内容将在标准输入中可用:stdin.

这意味着您可以通过阅读标准输入来阅读此内容。

例如:

  • read(0, buffer, LEN)会从你的文件中读取。
  • getchar()将从您的文件中返回一个字符。
于 2013-07-28T11:48:26.300 回答
3

在命令行上使用重定向时,argv 不包含重定向。

指定的文件只是成为您的标准输入/输入。

所以不需要使用打开它fopen,只需从标准输入中读取。

例子 :

using namespace std;
int main()
{

vector <string> v;

copy(istream_iterator<string>(cin),
    istream_iterator<string>(),
    back_inserter(v));

          for(auto x:v)
                cout<<x<<" ";

return 0;
}

测试<input.txt

输出

input.txt 的内容以空格分隔

于 2013-07-28T11:50:26.480 回答