C++ 遍历文件的每一行

C++ 遍历文件的每一行,c++,loops,file-io,formatting,getline,C++,Loops,File Io,Formatting,Getline,我正在构造一个程序,将文件作为输入读取,将文件输出到控制台,并对一些输入执行一些计算。输入文件是物质及其沸点的列表,如下所示: Acetaldehyde 20.8 Acetone 50.5 Acetylene -84 Ammonia -35.5 物质的总量大约是这个总量的4倍。我的问题是读取文件的每一行。到目前为止,我将读取第一行,然后终止我的循环。每当我尝试使用getline时,我只会得到温度,而不会得到名称 using namespace std; int ma

我正在构造一个程序,将文件作为输入读取,将文件输出到控制台,并对一些输入执行一些计算。输入文件是物质及其沸点的列表,如下所示:

Acetaldehyde    20.8
Acetone     50.5
Acetylene   -84
Ammonia     -35.5
物质的总量大约是这个总量的4倍。我的问题是读取文件的每一行。到目前为止,我将读取第一行,然后终止我的循环。每当我尝试使用getline时,我只会得到温度,而不会得到名称

using namespace std;

int main()
{
   ifstream inData;
   inData.open("input.txt");

   string substanceName;
   int boilPoint, min, max;

   cout << "Common Chemicals and Substances: " << endl;
   cout << endl;
   cout << left << setw(20) << "Substance" << right << " " << "Boiling Point" << endl;
   cout << setw(35) << setfill('-') << " " << endl;
   cout << setw(35) << setfill(' ') << " " << endl;

   inData >> substanceName >> boilPoint;
   while (inData)
   {
      cout << left << setw(20) << substanceName
           << right << " " << boilPoint << endl;
      inData >> substanceName >> boilPoint;
   }
   inData.close();
   return 0;
}

我在这里的主要目标是迭代每一行,而不进入更复杂的代码。我想我的循环有点问题,但我不知道是什么。或者我应该使用getline,但我不知道如何使用它,也不知道如何解释文件中的字符串和int变量

您试图将沸点读取为整数,但在文件中它是浮点。因此,它停止读取
处的第一个沸点(这就是为什么乙醛的沸点显示为20,而不是文件中包含的20.8)。这使事情变得不同步,因此它尝试读取
.8
作为第二个名称(成功,尽管它不是您想要的),但随后尝试读取下一个名称(丙酮)作为
int
,这显然失败了,使流处于失败状态,并中断循环


boilPoint
int
更改为
double
,情况应该会更好。

是的,这正是我的问题。我知道这很简单,我只需要另一双眼睛。谢谢你的评论和解释。

Substance            Boiling Point
---------------------------------- 

Acetaldehyde         20