【发布时间】:2020-02-02 08:07:09
【问题描述】:
我正在构建一个程序,它读取文件作为输入,将文件输出到控制台并对某些输入执行一些计算。输入文件是物质列表及其沸点,如下所示:
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;
}
输出看起来正确,但文件中缺少所有其他物质
Substance Boiling Point
----------------------------------
Acetaldehyde 20
我的主要目标是在不涉及更复杂的代码的情况下遍历每一行。我认为我的循环有问题,但我不知道是什么。或者我应该使用 getline 但我不明白如何使用它并且还考虑了来自文件的字符串和 int 变量。
【问题讨论】:
标签: c++ loops file-io formatting getline