|
|||
Чтение символов и строк. 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;
|
|||
|