Читаем С++ для "чайников" . полностью

            bool result = parseString( buffer , name , 80 ,

                                      accountNum , balance ) ;

            /* Вывод результата */

            cout << buffer << "\n" ;

            if ( result == false )

            {

                cout << "Ошибка разбора строки\n" ;

                continue ;

            }

            cout << "Имя = " << name << ","

                 << "Счёт = " << accountNum << ", "

                 << "Баланс = " << balance << endl ;

            /* Выводим поля в другом порядке ( вставка ends гарантирует нуль-завершённость буфера ) */

            ostringstream out ;

            out << name << ", "

                << balance << " "

                << accountNum << ends ;

            /* Вывод результата. Класс istringstream работает и с классом string, но пока что мы не будем использовать эту возможность */

            string oString = out.str( ) ;

            cout << oString << "\n" << endl ;

        }

        /* Пауза для того, чтобы посмотреть на результат работы программы */

        system( "PAUSE" ) ; return 0 ;

    }

Программа начинает работу с открытия файла Accounts.txt, содержащего информацию в формате

Имя, номер счёта, баланс, \n

В предположении, что файл открыт успешно, программа входит в цикл, считывающий файл построчно до его полного прочтения. Строки считываются при помощи функции-члена getline( ), который читает их до символа новой строки. Затем считанная строка передаётся функции parseString( )

_________________

286 стр. Часть 5. Полезные особенности

Функция parseString( ) связывает с символьной строкой объект istringstream. Программа считывает символы из строки до достижения символа '.' ( или конца строки ) при помощи функции-члена getline( ), после чего используются обычные операторы извлечения из потока для чтения номера счёта и баланса. Чтение выполнено успешно, если inp.fail( ) возвращает false.

После вызова функции parseString( ) выполняется вывод в буфер обработанной информации. Результат работы программы выглядит следующим образом.

    ================

    Chester, 12345 56.60

    Имя = Chester,Счёт = 12345, Баланс = 56.6

    Chester, 56.6 12345

    ================

    Arthur, 34567 67.50

    Имя = Arthur,Счёт = 34567, Баланс = 67.5

    Arthur, 67.5 34567

    ================

    Trudie, 56x78 78.90

    Ошибка разбора строки

    ================

    Valerie, 78901 89.10

    Имя = Valerie,Счёт = 78901, Баланс = 89.1

    Valerie, 89.1 78901

    ===============

    Press any key to continue...

Обратите внимание, как программа способна восстановиться после ошибок во входном файле. Оцените также простоту функции parseString( ), использующей возможности класса istringstream.

<p id="chapter24.6"><strong>►Работа с манипуляторами...287</strong></p>

Обычно потоки ввода-вывода для выведения чисел и символов используют формат по умолчанию, который оказывается вполне подходящим для решения большинства задач.

Например, мне совсем не нравится, когда общая сумма в моей любимой финансовой программе выводится как 249.600006 вместо ожидаемого 249.6 ( а ещё лучше — 249.60 ). Необходимо каким-то образом указать программе количество выводимых цифр после десятичной точки. И такой способ есть; более того, в С++ он не единственный.

«В зависимости от установок по умолчанию вашего компилятора, вы можете увидеть на экране 249.6. Однако хотелось бы добиться того, чтобы выводилось именно 249.60.»

[Атас!]

Во-первых, форматом можно управлять с помощью серии функций-членов объекта потока. Например, количество разрядов для отображения можно установить, используя функцию precision( ):

    #include

    void fn( float interest , float dollarAmount )

    {

        cout << "Сумма в долларах = " ;

        cout.precision( 2 ) ;

        cout << dollarAmount ;

        cout.precision( 4 ) ;

        cout << interest

             << "\n" ;

    }

_________________ 

Перейти на страницу:

Все книги серии Для чайников

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных