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

4

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

我期望的文件格式是:myprogram < file_as_input。因此,应该将文件内容放入argv中。如何在C/C++中实现?


如何从未知的输入类型(文件流或stdin)中读取数据C - Grijesh Chauhan
Mayank:注意<在注释行上是重定向运算符 - Grijesh Chauhan
2个回答

11
当程序像这样被调用时./a.out < file,文件的内容将会在标准输入stdin中可用。
这意味着你可以通过读取标准输入来读取此内容。
例如:
  • read(0,buffer,LEN)将从文件中读取。
  • getchar()将从文件中返回一个字符。

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中的内容用空格分隔


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接