Я создаю программу, которая читает файл в качестве входных данных, выводит файл на консоль и выполняет некоторые вычисления для некоторых входных данных. Входной файл представляет собой список веществ и их точки кипения, например:
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, поступающие из файла.