Стефан Дэвис - С++ для чайников .

Тут можно читать онлайн Стефан Дэвис - С++ для чайников . - бесплатно полную версию книги (целиком) без сокращений. Жанр: sci_tech, издательство Издательский дом Вильямс. Компьютерное издательство Диалектика, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    С++ для чайников .
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Вильямс. Компьютерное издательство Диалектика
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    0-7645-6852-3, 978-5-8459-0723-3
  • Рейтинг:
    4/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Стефан Дэвис - С++ для чайников . краткое содержание

С++ для чайников . - описание и краткое содержание, автор Стефан Дэвис, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
empty-line
1
empty-line
4

С++ для чайников . - читать онлайн бесплатно полную версию (весь текст целиком)

С++ для чайников . - читать книгу онлайн бесплатно, автор Стефан Дэвис
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Функция openFile( ) запрашивает у пользователя имя открываемого файла и создаёт поток с этим именем. Создание объекта ifstream автоматически открывает файл для ввода. Если файл открыт корректно, функция возвращает указатель на объект ifstream , который используется для чтения. В противном случае объект удаляется и повторяется попытка открыть файл. Единственный способ выйти из цикла — ввести правильное имя файла или завершить выполнение программы.

Не забывайте о необходимости удаленияpFileStream если вы не смогли открыть - фото 304

«Не забывайте о необходимости удаленияpFileStream , если вы не смогли открыть файл. Это позволит избежать утечек памяти.»

[ Советы ]

Программа считывает целые числа до тех пор, пока не дойдёт до конца файла ( проверяется при помощи функции-члена eof( ) ) или не произойдёт ошибки чтения ( функция fail( ) ). Попытка прочитать информацию с помощью объекта класса ifstream с установленным флагом ошибки приведёт к немедленному возврату без считывания данных. Для сброса флага ошибки используйте функцию clear( ) .

Ещё раз напомню что при чтении из потока в состоянии ошибки ничего считано не - фото 305

«Ещё раз напомню, что при чтении из потока в состоянии ошибки ничего считано не будет. Более того, буфер останется неизменным, так что программа может прийти к ошибочному выводу, что прочитано такое же значение, как и перед этим. Кстати, при наличии ошибки функцияeof( ) никогда не вернётtrue

[ Советы ]

Вывод этой программы имеет следующий вид.

Введите имя файла с целыми числами testfile Невозможно открыть testfile - фото 306

Введите имя файла с целыми числами

testfile

Невозможно открыть testfile

Введите имя файла с целыми числами

integers.txt

123

456

234

654

4363

48923

78237

Press any key to continue...

►Прямое чтение из потока...282

Операторы вставки и извлечения обеспечивают удобный механизм чтения форматированного ввода. Однако бывают ситуации, когда надо просто прочесть нечто из потока, не заботясь о формате входной информации. В этом случае вам могут помочь два метода. Функция-член getline( ) возвращает строку символов, считанную из потока до появления в нём некоторого символа-терминатора — по умолчанию символа новой строки. Данная функция удаляет терминатор из строки, но не делает никаких других попыток каким-либо образом изменить или интерпретировать вводимую строку.

_________________

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

Вторая функция-член read( ) носит ещё более фундаментальный характер. Она просто считывает указанное вами количество символов ( либо меньшее, если в процессе чтения достигается конец файла ). Функция gcount( ) возвращает количество реально считанных символов.

Далее приведена демонстрационная программа, которая использует описанные функции для чтения произвольного файла и вывода его на дисплей.

/* FileInput — чтение блока данных из файла */

#include

#include

#include

using namespace std ;

ifstream* openFile( istream & input )

{

for ( ; ; )

{

/* Открытие определённого пользователем файла */

char fileName[ 80 ] ;

cout << " Введите имя файла" << endl ;

/* Чтение вводимого пользователем имени ( не более 80 символов, что обеспечивает невозможность переполнения буфера ) */

input.getline( fileName , 80 ) ;

/* Открываем файл для чтения; если его нет — заново его не создаём */

ifstream* pFileStream = new ifstream( fileName ) ;

if ( pFileStream -> good( ) )

{

return pFileStream ;

}

cerr << "Невозможно найти файл " << fileName << endl ;

}

return 0 ;

}

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

{

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

/* Получаем поток */

ifstream* pFileStream = openFile( cin ) ;

/* Читаем его блоками по 80 байт */

char buffer[ 80 ] ;

while ( !pFileStream -> eof( ) && pFileStream -> good( ) )

{

/* Чтение блоками; gcount( ) возвращает количество реально считанных байт */

pFileStream -> read( buffer , 80 ) ;

int noBytes = pFileStream -> gcount( ) ;

/* Работа с блоком */

for ( int i = 0 ; i < noBytes ; i++ )

{

cout << buffer[ i ] ;

}

}

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

system( "PAUSE" ) ; return 0 ;

}

_________________

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

В данной программе сначала вызывается функция openFile( ) , открывающая файл, имя которого вводится пользователем. Здесь есть два интересных момента. Во-первых, функция читает объект istream так же, как ранее — cin ( функция main( ) передаёт функции openFile( ) поток cin в качестве аргумента ). Однако данная функция может использовать произвольный поток istream без каких-либо модификаций.

Во-вторых, функция openFile( ) использует для чтения из потока функцию getline( ) , одним из аргументов которой является размер буфера для ввода информации. Функция getline( ) не может считать больше указанного количества символов.

Использование этой функции для чтения информации безопаснее чтения информации - фото 307

«Использование этой функции для чтения информации безопаснее чтения информации в массив символов при помощи оператора извлечения, так как оператор извлечения может прочесть больше символов, чем может поместить входной буфер.»

[ Советы ]

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

Введите имя файла integerstxt 123 456 234 654 4363 48923 78237 dhbj - фото 308

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

integers.txt

123 456 234 654

4363 48923 78237 dhbj

dnbsd

93276823 4329

Press any key to continue...

►Что такое endl...284

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

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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стефан Дэвис читать все книги автора по порядку

Стефан Дэвис - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




С++ для чайников . отзывы


Отзывы читателей о книге С++ для чайников ., автор: Стефан Дэвис. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x