Хелпикс

Главная

Контакты

Случайная статья





Чтение символов и строк. using namespace std;. int main(). char name[9], ext[4];



2.3.4 Чтение символов и строк

Для чтения одиночных символов, а также строк применяется функция get класса istream. Эта функция перегружена следующим образом:

int get();

istream &get(char &c) ;

istream &get(char *buf, long len, char t = '\n');

Две первые формы функции предназначены для извлечения из потока одиночного символа. Функция int get() возвращает символ в качестве своего значения. Функция get (char &c) передает символ в параметре и возвращает ссылку на свой поток.

Пример 11.1 Блок посимвольного копирования файлов

ifstream ifs("infile.dat");

ofstream ofs("outfile.dat");

// put (char) передает в поток

// одиночный символ.

while (ifs & ofs)

ofs.put(ifs.get());

Последняя форма функции get() извлекает из потока последовательность символов. Символы читаются в буфер buf, пока не произойдет одно из следующих событий:

· будет встречен ограничивающий символ t (по умолчанию '\n');

· будет встречен конец файла;

· в буфер будет записано len символов, включая завершающий строку 0.

Имеется еще функция getline(), во всем аналогичная этой форме get():

istream &getline(char *buf, long len, char t = '\n');

Разница между этими двумя функциями состоит в том, что getline() извлекает из потока ограничивающий символ, в то время как get() этого не делает. Ни та, ни другая функция не записывает ограничивающий символ в буфер.

Пример 11.2 Блок чтения строк с помощью get()

#include "stdafx.h"

#include <iostream>

using namespace std;

int main()

{

setlocale(LC_ALL, "Russian");

char name[9], ext[4];

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

cin.get(name, 9, '.');

cin.ignore (80, '.'); // Удалить все оставшиеся до точки символы

cin.get(ext, 4) ;

cin.ignore(80, '\n'); // Удалить все, что осталось в строке

cout<< "Имя: "<< name << " Расширение: " << ext << endl;



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.