Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Сравните средства форматирования объектно-ориентированной и процедурной библиотеки.






ОО – манипуляторы. Действуют для потока.

ПРОЦ – строка форматирования. Действует для конкретного ввода.

308. Каким образом ввести строку типа string с пробелами?

Функция getline()

309. Каково назначение флагов форматирования? Какие средства реализованы в библиотеке для работы с флагами форматирования?

Управляют форматированием ввода-вывода.



310. Что такое «манипулятор»? В чем преимущества манипуляторов перед флагами форматирования?

Функция для установки состояния потока. Когда операции записываются, как инструкции, логические связи между ними не очевидны.

311. Как связываются файлы с потоками в объектно-ориентированной библиотеке?

Через конструктор и деструктор.

312. Можно ли файлы, записанные функциями библиотеки, прочитать объектно-ориентированными средствами? А наоборот?

Да. Да.

313. Перечислите режимы открытия объектно-ориентированных файловых потоков. каким образом комбинируются режимы открытия файлоавых потоков?

чтение, запись, добавление в конец, двоичный, поиск конца

побитовым “ИЛИ”

314. Обязательно ли закрывать файл, связанный с объектно-ориентированным файловым потоком? А открывать?

Достаточно создать объект класса потока.

315. Каким образом открыть файловый поток для чтения и записи одновременно?

объявить объект типа std:: fstream и добавить соответствующие флаги.

316. Как открыть файловый поток для дозаписи?

ios_base app

317. Можно ли вывести значение переменной в двоичном виде и как это сделать?

int i = 938745;

cout < < bitset(i);

Или через флаги.

318. Разрешается ли наследовать от классов библиотеки ввода/вывода?

Да.

319. Каким образом можно перенаправить объектно-ориентированный поток?

class redirecter

{

public:

redirecter(std:: ostream & dst, std:: ostream & src)

: src(src), sbuf(src.rdbuf(dst.rdbuf())) {}

~redirecter() { src.rdbuf(sbuf); }

private:

std:: ostream & src;

std:: streambuf * const sbuf;

};

int main()

{

std:: ofstream log(" hello-world.log");

redirecter redirect(log, std:: cout);

std:: cout < < " Hello, world! \n";

return 0;

}

320. Как используется буфер потока для копирования потока?

ostream dst; istream src;

dst < < src.rdbuf();

321. Какими операциями выполняется форматированный ввод/вывод в файловые потоки? А неформатированный?

fprintf, fscanf

fread, fwrite

322. Реализованы ли в объектно-ориентированной библиотеке средства прямого доступа к файловым потокам? Сравните их с аналогичными средствами библиотеки.

Да.

323. С какими объектно-ориентированными потоками разрешается, и с какими не разрешается использовать средства прямого доступа?

iostream – разрешено

stringstream – запрещено

324. Покажите, каким образом можно выполнить перегрузку операций ввода/вывода для нового типа данных.

class A

{

public:

int getField(){return i; }

int setField(int i) { this-> i = i; }

A(int i): i(i);

private:

int i;

};

std:: ostream& operator<

std:: istream& operator> > (std:: istream& s, A a) { int i = 0; s > > i; a.setField(i); return s; }

325. Как выполняется обработка ошибок ввода/вывода в объектно-ориентированной библиотеке?

Исключения или флаги состояния потока

326. Какое стандартное исключение генерируется при ошибках ввода/вывода? Обязательно ли оно генерируется?

ios_base:: failure

не всегда. Надо попросить об этом, например, cout.extensions(ios_base:: badbit|ios_base:: eofbit);

327. Чем стандартные широкие потоки отличаются от узких?

Оперируют расширенными символами (юникод) wchar_t, например.

328. Что такое — «локаль», и каково ее назначение?

Объект, который контролирует классификацию символов и устанавливает порядок их следования.

Поддержка соглашений, принятых в другой культуре.

329. Как установить русский шрифт при выводе в консольное окно?

например:

locale loc(“ru_RU.UTF8″);

locale:: global(loc);

330. отличается ли ввод/вывод широких файловых потоков от узких? Чем?

На уровне интерфейса – нет.

331. Перечислите все последовательные контейнеры стандартной библиотеки. Чем они отличаются друг от друга?

vector – непрерывная в памяти последовательность, операции с концом вектора и индексация О(1), вставка в середину O(n)

list – вставка в начало и конец за постоянное время, доступ к элементам за линейное

dequeue – вставка в оба конца за постоянное время, индексация приближённо как у вектора






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.