0

これは私がこれまでに持っているコードです。入力ファイルからデータを取得しています。このファイルには、呼び出している各変数に必要なすべてのデータが含まれていますが、ファイルを実行すると、反復が1回だけ取得され、その後ループが終了します。ファイルの最後に到達するまで実行する必要があります。

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

int main ()
{
    ifstream pTemp("PlanetCelsius.dat");
    int pNumber, pSize;
    string pName;
    double cTemp, fTemp;

    cout << "Number\t" << "Planet Name\t" << "Diameter\t" << "Celsius\t" << "Fahrenheit" << endl;

        while (pTemp >> pNumber) 
        {
            while (pTemp >> pName) 
            {
                while (pTemp >> pSize) 
                {
                    while (pTemp >> cTemp) 
                    {
                        pTemp >> pNumber;
                        cout << pNumber << " ";
                    }
                pTemp >> pName;
            cout << pName << " ";
                }
        pTemp >> pSize;
        cout << pSize << " ";
            }
    pTemp >> cTemp;
    fTemp = 9 * (cTemp) / 5 + 32;
    cout << cTemp << " " << fTemp << endl;
        }

    system ("PAUSE");
        return 0;
}
4

2 に答える 2

1
while (cin.good)
{
    pTemp >> pNumber >> pName >> pSize >> cTemp >> pNumber;
    cout << pNumber << " " << pName << " " << pSize << " ";
    fTemp = 9 * (cTemp) / 5 + 32;
    cout << cTemp << " " << fTemp << endl;

}
return 0;

私はあなたのファイル構造を見ていませんが、このコードスニペットは機能すると思います。

于 2013-03-25T23:46:54.453 に答える
0

あなたはやっている:

while(there's a number)
  while(there's a string)
    while(there's a number)
     while(there's a number)
     take first number
    take first string
  take first number
take first number

プログラムは、number-string-number-numberシーケンスをループしながら、最も内側にあるすべての数値をフェッチします。

最初のwhileが2回目にチェックされると、最も内側のループが最初の文字列まですべての数値をフェッチして終了するため、数値を見つけることができません。

while()sを使用するのは悪い選択です。spin_eightが提案するように、ファイルを解析してみてください。

于 2013-03-25T23:59:12.727 に答える