Я новичок в C++ и пытаюсь преобразовать следующие операторы в цикл выражений, считанных из файла. Следующая серия заявлений отлично работает, когда я поставляю ввод с терминала:Как превратить это в цикл?
int main()
{
Expression* expression;
char paren, comma;
cout << "Enter expression: ";
cin >> paren;
expression = SubExpression::parse();
cin >> comma;
parseAssignments();
cout << "Value = " << expression->evaluate() << endl;
return 0;
}
Но вместо передачи в выражении от cin
, который я должен войти в терминале, я хотел бы прочитать файл построчно и передать его в программу (которая заканчивается символом новой строки).
Я пробовал делать следующее, но программа блокируется на cin
. Любые предложения по изменению моего кода для этого?
int main()
{
ifstream inFile;
inFile.open("input.txt", ifstream::in);
string line;
while(inFile.good())
{
Expression* expression;
char paren, comma;
cin >> line;
paren = line[0];
expression = SubExpression::parse();
cin >> line;
comma = line.back();
parseAssignments();
cout << "Value = " << expression->evaluate() << endl;
}
inFile.close();
}
Извините, если это глупый вопрос, но то, что делает '' >> делать, когда в паре с 'inFile'? Это труба? –
Это [перегруженный оператор] (http://www.cplusplus.com/reference/istream/istream/operator%3E%3E/) для чтения и хранения данных. – MikeCAT
@free_mind: Он делает то же самое, что и с 'cin', за исключением того, что он получает свои символы из файла вместо терминала. –