入力として渡されたコマンドラインからファイルを読み込もうとしています。いいえ、ファイル名ではありません。ユーザーがコマンドラインでファイル名を入力することを期待していないので、次のように開くことができます: fopen(argv[1], "r");
.
次のようなファイルを期待しています: myprogram < file_as_input
. したがって、argv に入力する必要があるのは、ファイルの内容です。C/C++ でこれを行うにはどうすればよいですか?
プログラムがこのように呼び出される./a.out < file
と、ファイルの内容が標準入力で利用可能になりますstdin
:
つまり、標準入力を読み取ることで、このコンテンツを読み取ることができます。
例えば:
read(0, buffer, LEN)
ファイルから を読み取ります。getchar()
ファイルから char を返します。コマンド ラインでリダイレクトを使用すると、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の内容