这是我到目前为止的代码。我从输入文件中获取数据。该文件包含我正在调用的每个变量所需的所有数据,但是当我运行它时,我只获得一次迭代,然后在此之后退出循环。我需要它运行直到它到达文件的末尾。
#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;
}
答案 0 :(得分: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;
我没有看到你的文件结构,但我猜这个代码片段会起作用。
答案 1 :(得分: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()s是一个糟糕的选择,尝试将文件解析为spin_eight建议。