前回の記事、我々はについて話しました: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型プロファイルであるためには、フォーマットされています。