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