C ++ проблема с потоком строк istringstream - PullRequest
0 голосов
/ 17 апреля 2010

Я читаю файл в следующем формате

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;

        }
    }

1 Ответ

3 голосов
/ 17 апреля 2010

Вы тоже не читаете. Заменить условие на

while( getline(inputstream, line) )

Если вы используете operator>>, оно извлечет только первое слово для line.

...