我正在尝试从作为输入传递的命令行中读取文件。不,不是文件名。我不希望用户在命令行上输入文件名,因此我可以这样打开它:fopen(argv[1], "r");
。
我期待这样的文件:myprogram < file_as_input
。所以进入argv应该是文件的内容。我如何在C / C ++中做到这一点?
答案 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的内容