2017-10-23 4 views
-1

私のプログラムは、次のコマンドライン引数を正しく処理する必要があります。しかし、私はそれが何であるか、それをどう実装するのかを理解していません。C++でI/Oリダイレクトが意味することは何ですか?

main.exe < test.txt 

test.txtというファイルが含まれています

種類数:20
固体:6
を他の人:OS年代の0

+3

これはシェル機能です。あなたは 'test.txt'ファイルが' std :: cin'を通して入力されるのを見るでしょう。 – user0042

+1

また、シェルがファイルをリダイレクトするので、 'main.exe'のコマンドライン引数はありません –

答えて

-1

プロセスデータを入出力するためのIO機能を持っています。 C++の標準入力はstd :: cinに接続され、標準出力はstd :: coutに接続され、標準エラーはstd :: cerrに接続されます。

Linuxでは、標準入力でファイルの内容を取得します。そのパスを使用してファイルをロードし、必要な処理を実行できます。

int main(void) 
{ 
    std::string file, line; 
    while (std::getline(std::cin, line)) 
    { 
    file += line; 
    file += "\n"; 
    } 

    //Do what you need to do here with file contents 

    return 0; 
} 

編集:私は実際にこのようなLinuxプログラムを書く必要があったので、コメントに基づいたカップル調整。

+1

ファイルの内容ではなくパスの内容を取得します。 – mkrieger1

+0

これらのことは、1950年代のFORTRANのように、実際に[コンピューティングの開始](https://en.wikipedia.org/wiki/Standard_streams)以来、同様の概念を持ちました。 1970年代のCでは、「stdin」というよりわかりやすいラベルで定義されていました。 – tadman

+0

ファイルまたはストリームに最初の単語(スペースで区切られたトークン)が表示されます。 –

0

シェルスクリプト '<'は、ファイルの内容や右側のプログラムの出力(あなたの場合はtext.txt)が標準入力(std :: cin in C++)。つまり、std :: cinで直接ファイルを読むことができます。

「>」のように、左の標準出力を正しい要素にするようなものがあります。

関連する問題