Программирование >>  Расширенная версия языка c++ 

1 ... 133 134 135 [ 136 ] 137 138 139 ... 227


В результате выполнения программы на экран выводится следующее:

через массивы работает с точно так же, как при обычном вводе/выводе

100 123.23

64 01.2323е+02 -

Каы могли заметить, перегруженные операторы ввода/вывода, встроенные

манипуляторы ввода/вывода, функции-члены и флаги формата полностью

доступны и для ввода/вывода с использованием массивов. (Это также относится ко всем манипуляторам и перегруженным операторам ввода/вывода, которые вы создаете для своих классов.)

В представленной выше программе щью манипулятора ends в массив специально добавляется завершающий нулевой символ. Будет ли нулевой символ занесен в массив автоматически или нет, зависит от реализации. Поэтому, если это важно для вашей программы, лучше специально записать в массив завершающий нулевой символ.

2. Пример ввода данных из массива: Пример ввода из массива

#include <iostreain> , j ii*.jr; -

finclude <strstream> . -[,.-...

using namespace std;

int main () , . ,

char buf[] = Привет 100 123.125 a ;

istrstream istr(buf); открытие массива для ввода из него inti;

char str[80];

float f; ) . Ч : .-: ,tcf . .

char c; -

ist> st> > > c; -

cou< st< < < f;

cout с \n;

return 0;

Эта программа считывает и воспроизводит данные, содержащиеся в массиве, заданном указателем buf.

3. Запомните, что массив для ввода, после того как он связан с потоком, становится похожим на файл. Например, в следующей программе для считывания содержимого массива по адресу buf используются функции eof() и get():



/лава 13. Пространства имен и другие темы 415

/* Демонстрация того факта, что функции eof() и get() работают

с вводом/выводом, основанным на использовании массивов

*/ / \

♦include <iostream> . . , ..-ji.-.v;

♦include <strstreain>

using namespace std;

int main (} .

charbuf[] = Привет 100 123.125 a ;

istrstream istr(buf);

char c; -

istr.get (c); .- ,

if c;

1.1

return

4. В слеющей программе выполняется ввод данных из массива и вывод данных в массив:

Демонстрация ввода/вывода с использованием массивов

finclude <iostreain> - .

#include <strstream> -ji:, ..M . .. ; >

using namespace std;

int raainO ч---. ;. - i c-,

char

strstream iostr (iobuf, sizeof iobuf) ;

iost Это проверка\n ; ..,

iost << 10 he 10 ends; . ., .

char int i ;

iostr.getline(str, 79); считывает строку вплоть до \п -c.i

iost >> de >> i; считывает 100

cou st< < i ;

iostr hex i; cou hex i;

return 0;




1. Модифицируйте пример так, чтобы перед завершением программы на экран было выведено число символов, записанных в массив по адресу baf.

2. Используя массивы в качестве объектов ввода/вывода, напишите программу для копирования содержимого одного массива в другой. (Конечно это не самый эффективный способ решения подобной задачи.)

3. Используя массивы в качестве объектов ввода/вывода, напишите программу для преобразования строки, содержащей значение с плавающей точкой, в число с плавающей точкой.

....-----щ-- Ч,-. . ~ <L-ii::-V ..7<:-Г

материала главы

Теперь вам необходимо выполнить следующие упражнения и ответить на вопросы.

1. Что отличает статическую переменную-член от других переменных-

членов?

2. Какой заголовок необходимо включить в вашу программу, чтобы в качестве объектов ввода/вывода можно было использовать массивы?

3. Не считая того, что при вводе/выводе через массивы память используется в качестве устройства ввода и/или вывода, имеется ли еще какое либо отличие между таким и обычным вводом/выводом?

4. Для заданной функции ш4ег() напишите инструкцию, позволяющую компилировать эту функцию для сборки с языком С.

5. Для чего нужна функция преобразования?

6 мсните назначение спецификатора explicit.

7. Какое имеется принципиальное ограничение на использование постоянных функций-членов?

8. Объясните понятие пространств имен.

9. Для чего нужно ключевое слово mutable?

Эта программа сначала записывает информацию в массив по адресу iobuf, a затем считывает ее обратно. Сначала с помощью функции getline() строка Это проверка целиком считывается в массив, далее считывается десятичное значение H)(J. а зате цатеричное 0x64.



1 ... 133 134 135 [ 136 ] 137 138 139 ... 227

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика