2016-05-05 15 views
-4

に私は誰かがこのwhileループは、ここでどのように機能するかを説明することができますので、ファイルを開こうとすると、いくつかのトラブルを抱えている方:ファイルを開く

#include <fstream> 

std::ifstream infile("thefile.txt"); 
int a,b; 
while (file >> a >> b){} 
+4

あなたはそれについて何を理解していませんか? – NathanOliver

+1

whileループの前に 'infile'の状態を調べます。 'thefile.txt'はおそらくあなたの現在の作業ディレクトリにはありません。 –

+0

私はこの中でどのように働いているのか理解できません。ファイル>>> >> bは何ですか – Irene

答えて

2

whileループは、空のボディを持っています。したがって、それが行うすべては、偽になるまで式file >> a >> bを評価します。

file>>a>>bあなたが開いたファイルから2つの整数を読み込みます。エラーまたはファイルの終わりに遭遇すると、それは偽になります。

編集:

しかし、ファイルを開く際に問題に言及。成功したかどうか、失敗した理由を確認できます。

if (!file) 
    cerr<<"Couldn't open the file:"<< strerror(errno) <<endl; // or alternatively 
                   // use the good old perror() 
else 
    ... 
+0

これは最初に見つかった2つの数字をaとbにソートしますか? – Irene

+0

@Ireneソートされません。ファイルの最後に到達するか、エラーが発生するまで、2つのスペースで区切られた整数を 'a'と' b'に読みとります。 –

+0

最初の数字はaに、2番目の数字はbに、それは再びllopsになるので、3番目の数字はaとbの4番目になります。 – Christophe

1

実際にあなたが尋ねていることは不明です。ファイルを正しく開くにはどうすればいいですか、またはコアを開くことができないときにはどうすればwhile (file >> a >> b)が動作するのですか?コメントでコードを説明しようと

まあ、:

#include <fstream> 

std::ifstream infile("thefile.txt"); // Tries to open the file in the current working 
            // directory the program is executed 
int a,b; 
while (file >> a >> b){} // Will try to read numeric values from file and store them to 
         // a and b. If the file couldn't be opened, or the parsing 
         // for numeric values failed, the loop will never be entered or 
         // immediately end