![]() |
|
Программирование >> Расширенная версия языка c++
В результате выполнения программы на экран выводится следующее: через массивы работает с точно так же, как при обычном вводе/выводе 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.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |