从命令行读取文件作为输入

时间:2013-07-28 11:46:48

标签: c++ c

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

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

2 个答案:

答案 0 :(得分:11)

当调用类似./a.out < file的程序时,该文件的内容将在标准输入上提供:stdin

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

例如:

  • read(0, buffer, LEN)会从您的文件中读取。
  • getchar()会从您的文件中返回一个字符。

答案 1 :(得分:3)

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

指定的文件只是你的stdin / cin。

所以不需要使用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的内容