2012-03-19 15 views
1

私はCSの初心者ですが、CSでの講義を​​受けているのですが、私のコードでは入力ファイルの値が読み込まれないので固執しています。 。さらに、私はそれがセンチネル値になるときに何をすべきかはよく分かりません(do whileループが必要なので、私はセンチネル値を最初の値にしてループを止めなければならないと思います。ifstreamはC++のファイルから値を読み取っていません

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

int main() 
{ 
// Declare the variables to be used in the program. 

ifstream infile; 
string schoolname, location; 
int tuition, enrollnum, i; 
double average; 

//Obtain the values for the variables from the file given. 

infile.open("OH-in.dat");    //Accomplish task 1. 
{ 
    i = 0; 
    cout << "Schools in Cincinnati with tuition below $20,000." << endl; 
    cout << "-----------------------------------------------------" << endl; 
    do 
    { 
     // Read the values in the data file. 
     infile >> schoolname; 
     infile >> location; 
     infile >> enrollnum; 
     infile >> tuition; 

     // Separate the values that contain Cincinnati and if it's tuition is over 20000 dollars. 

     if (schoolname == "Cincinnati" && tuition < 20000) 
     { 
      cout << schoolname << "      $" << tuition << endl; 
      i++; 
     } 
     // Display the number of schools that fit the criteria. 
     cout << "Number of schools:      " << i << endl; 
    } 
    //While the 1st value read in is not ***, the loop will continue. 
    while (schoolname != "***"); 
    //Close the file. 
    infile.close(); 
} 
system("pause"); 
return 0; 
} 

は、ここで私が入力される最初の4つの値だ:上、その後から)

ここで私がこれまで持っているコードです。

AntiochCollege

YellowSprings

...

最後に、それはこれに来ます。

'* * *'

このデータは、10月10日にpetersons.com

から回収し、11いくつかの名前と場所

のデータが変更されています。


さて、私はこのコードを持っていた主要な二つの問題は、単に値を読み取るためにC++を取得されている、第二に無限に自分自身を繰り返さないためのコードを取得します。

答えて

0

あなたはすぐに4つの "INFILE >>" の文の後に

if (infile.fail()) break; 

のようなものを使用することができます。あるいは.fail()ではなく、.eof()を使用することもできます。いずれにしても、のinfileにはデータがありません。

具体的なケースでは、もちろん、ファイルの終わりではなくセンチネルを探していますが、同じ原則が適用されます。これは、C++のブレークステートメントの理想的なケースです。ちなみに

、あなたが休憩、あなたはおそらくが行う-ながら、もはやたくはありませんを追加すると。 while(true)またはfor(;;) - つまり、常に条件が成立するループが役に立つでしょう。このループの自然な終了点は中間にあり、のブレークで追加します。

関連する問題