Проблема C ++ со строковым потоком istringStream
-
27-09-2019 - |
Вопрос
Я читаю файл в следующем формате
1001 16000 300 12.50
2002 24000 360 10.50
3003 30000 300 9.50
Где предметы: Идентификатор займа, основные, месяцы, процентные ставки.
Я не уверен, что это так, то, что я делаю не так с моим входным строковым потоком, но я не читаю значения правильно, потому что только идентификатор кредита читается правильно. Все остальное равно нулю. Извините, это домашнее задание, но я просто хотел знать, можете ли вы помочь мне определить мою ошибку.
if( inputstream.is_open() ){
/** print the results **/
cout << fixed << showpoint << setprecision(2);
cout << "ID " << "\tPrincipal" << "\tDuration" << "\tInterest" << "\tPayment" <<"\tTotal Payment" << endl;
cout << "---------------------------------------------------------------------------------------------" << endl;
/** assign line read while we haven't reached end of file **/
string line;
istringstream instream;
while( inputstream >> line ){
instream.clear();
instream.str(line);
/** assing values **/
instream >> loanid >> principal >> duration >> interest;
/** compute monthly payment **/
double ratem = interest / 1200.0;
double expm = (1.0 + ratem);
payment = (ratem * pow(expm, duration) * principal) / (pow(expm, duration) - 1.0);
/** computer total payment **/
totalPayment = payment * duration;
/** print out calculations **/
cout << loanid << "\t$" << principal <<"\t" << duration << "mo" << "\t" << interest << "\t$" << payment << "\t$" << totalPayment << endl;
}
}
Решение
Вы не читаете LineWise. Заменить состояние
while( getline(inputstream, line) )
Если вы используете operator>>
это извлечет только первое слово line
.
Не связан с StackOverflow