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

Функция main( ) читает открытый файл блоками по 80 символов, проверяя реально считанное количество символов с помощью функции gcount( ). Для вывода прочитанной информации используется обычный оператор вставки в поток. Вот как может выглядеть вывод данной программы.

    Введите имя файла

integers.txt

    123 456 234 654

    4363 48923 78237 dhbj

    dnbsd

    93276823 4329

    Press any key to continue...

<p id="chapter24.4"><strong>►Что такое endl...284</strong></p>

Большинство программ в данной книге завершают вывод в поток вставкой объекта endl. Однако некоторые программы включают в выводимый текст символ \n. В чём тут дело?

Символ \n — символ новой строки. Так, выражение соut<<"Первая строка\nВторая строка" выведет две строки. При вставке объекта endl также произойдёт вывод символа новой строки, но при этом выполняется ещё одно действие.

Диски — медленные устройства, и чтобы вывод на диск меньше замедлял работу программы, fstream накапливает выводимые данные во внутреннем буфере. Класс выводит буфер на диск по его заполнении. Вставка же объекта endl заставляет сбросить на диск всё, что есть в буфере, независимо от его заполненности. Сбросить буфер без вывода символа новой строки можно при помощи явного вызова функции-члена flush( ).

_________________

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

<p id="chapter24.5"><strong>►Подклассы strstream...285</strong></p>

Потоковые классы позволяют программисту разбивать входные данные на числа и массивы символов. Так называемые "строковые потоки" позволяют использовать операции, определённые для файлов в классах fstream, для строк в памяти. Соответствующие классы istringstream и ostringstream определены в заголовочном файле sstream.

«В старых версиях С++ эти классы назывались istrstream и ostrstream и были определены в заголовочном файле strstream.»

[Советы]

Строковые потоки используют ту же семантику, что и соответствующие базовые классы для файлов, как видно из приведённой далее демонстрационной программы.

    /* StringStream — чтение и разбор содержимого файла */

    #include

    #include

    #include

    using namespace std ;

    /* parseAccountInfo — чтение переданного */

    /*                    буфера как если бы */

    /*                       это был файл. */

    /*              Формат: имя, счёт, баланс. */

    /*                   При корректной работе */

    /*                      возвращает true. */

    bool parseString( char* pString ,

                        char* pName ,

                       int arraySize ,

                     long& accountNum ,

                       double& balance )

    {

        /* Связывает объект istringstream с входной строкой */

        istringstream inp( pString ) ;

        /* Чтение до разделяющей запятой */

        inp.getline( pName , arraySize , ',' ) ;

        // Номер счёта

        inp >> accountNum ;

        // и его баланс

        inp >> balance ;

        /* Возврат состояния ошибки */

        return !inp.fail( ) ;

    }

    int main( int nNumberofArgs , char* pszArgs[ ] )

    {

      setlocale ( LC_ALL ,".1251" ) ; /* печать русских текстов */

        /* Файловый поток */

        ifstream* pFileStream = new ifstream( "Accounts.txt" ) ;

        if ( !pFileStream -> good( ) )

        {

                cout << "Невозможно открыть Accounts.txt" << endl ;

                return 0 ;

        }

        /* Считываем строку файла, разбираем и выводим результат */ 

_________________ 

285 стр. Глава 24. Использование потоков ввода-вывода

        for ( ; ; )

        {

            /* Добавляем разделитель */

            cout << "=================" << endl ;

            /* Читаем в буфер */

            char buffer[ 256 ] ;

            pFileStream -> getline( buffer , 256 ) ;

            if ( pFileStream -> fail( ) )

            {

                break ;

            }

            /* Разбираем ввод на поля */

            char name[ 80 ] ;

            long accountNum ;

            double balance ;

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

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

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

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

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

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

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

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

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

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