標準入力をファイルにリダイレクトした後、連続して読み込む方法を、どのように標準入力ストリームの終わりを決定するには?cin.eof();

前回の記事、我々はについて話しました:C、C ++標準入力のリダイレクト&ユニバーサルヘッド-プログラミングのスキル  https://www.cnblogs.com/xuyaowen/p/c-cpp-reopen.html

しかし、リダイレクションプロセスは、我々はファイルからの読み取りにループする必要があります。今回は、以下のいくつかの方法を使用する必要があります。

bash- 3.2 $の の.txt 
 1  2  3  4  5  6  7 8bash- 3.2 $の
バッシュ - 3.2 $  の.txt 
 1  2  3  4  5  6  7  8 bash- 3.2 $

ファイルのスペースの端部は、私は別のカウントを持っているので、方法2;特異的自己テスト方法1および3は、上記の両方の場合で同じで示しました。

書式#include <iostreamの> 
の#include <cstdioを> 
する#include <ベクトル>
 使用して 名前空間をSTD。
ベクトル < int型 > InArrayバリ。
INT メイン(){ 
    freopenは(" in.txt "" R "、標準入力)。// 重定向到输入
    int型私は= 0 ; 
    int型TMP; 
    // 方法1 
    ながら(CIN >> TMP)
    {    
        inarray.push_back(TMP)。
        COUT << InArrayバリ[I] << ENDL。++ ; 
    } 
    // 方法2 
    ながら(!cin.eof()){ 
        CIN >> TMP。
        inarray.push_back(TMP)。
        COUT << InArrayバリ[I] << ENDL。
        I ++ ; 
    } 
    // 方法3 
    ながら(scanf関数(" %のD "、&​​TMP)!= EOF)
    { 
        inarray.push_back(TMP)。
        COUT << InArrayバリ[I] << ENDL。
        I ++ ; 
    } 
    COUT << inarray.size()<< ENDL。
    COUT<< I << てendl;
    リターン 0 ; 
}

しかしながら、これらの方法はまた、異なるであろう。最後に、そこに線当たりcin.eof()スペースまたはキャリッジリターンがまだある、または増加させるために、私はカウント;それほど実際のプロセスでは、境界値を決定するために、私が使用することをお勧めします方法1および3;方法1 tmpがint型プロファイルであるためには、フォーマットされています。

おすすめ

転載: www.cnblogs.com/xuyaowen/p/cpp-cin-eof.html