我正在尝试从作为输入传递的命令行读取文件。不,不是文件名。我不希望用户在命令行上输入文件名,这样我就可以像这样打开它:fopen(argv[1], "r");
。
我期待这样的文件:myprogram < file_as_input
。所以应该进入 argv 的是文件的内容。我如何在 C/C++ 中做到这一点?
当像这样调用程序./a.out < file
时,文件的内容将在标准输入中可用:stdin
.
这意味着您可以通过阅读标准输入来阅读此内容。
例如:
read(0, buffer, LEN)
会从你的文件中读取。getchar()
将从您的文件中返回一个字符。在命令行上使用重定向时,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 的内容以空格分隔