|
Программирование >> Дополнительные возможности наследования
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 cout Please enter the file name: ; cin fileName; ofstream fout(fileName,ios::binary); if (!fout) cout Unable to open fileName for writing.\ n return(l); > Animal Bear(50,100); fout.write((char*) bBear,sizeof Bear); fout.closeO; ifstream fin(fileName,ios:;binary); if (!fin) cout Unable to open fileName for reading.\ n return(l); Animal BearTwo(1,1); cout BearTwo weight: BearTwo,GetWeight() endl; cout BearTwo days: BearTwo,GetDaysAlive() endl; fin, read((char.) 8.BearTwo, sizeof BearTwo); cout BearTwo weight; BearTwo, GetWeightO endl; cout BearTwo days: BearTwo, GetDaysAliveO endl; fin.closeO; return 0; Please enter the file name; Animals BearTwo weight: 1 BearTwo days: 1 BearTwo weight: 50 BearTwo days: 100 В строках 3-18 объявляется класс Animal. В строках 22-32 создается файл, который открывается для вывода в двоичном режиме. В строке 34 создается объект Animal со значениями переменных-членов itsWeight = 50 и itsNumberOaysAlive = 100. В следующей строке данные объекта заносятся в файл. В строке 37 файл закрывается, после чего повторно открывается для чтения в двоичном режиме в строке 39. Создается второй объект Animal, значения обоих переменных-членов которого равны 1. В строке 51 данные из файла считываются в новый объект Animal, замещая собой текущие значения объекта. Установка параметров ввода-вывода с помощью командной строки Многие операционные системы, такие как DOS и UNIX, позволяют пользователю выполнять установки некоторых параметров при запуске профаммы. Эти установки называются опциями командной сфоки и, как правило, отделяются друг от друга пробелами, например; SomeProgram Parami Param2 РагатЗ Эти парамефы не передаются напрямую в функцию main(). Вместо этого функция main( )профаммы может принимать два других параметра. Первый - это целочисленное значение, указывающее число аргументов командной строки с учетом имени профаммы. Поэтому минимальное значение этого параметра равно единице (задается по умолчанию). Для показанной выще командной сфоки значение параметра будет равно четырем. (Имя SomeProgram плюс три параметра в сумме дают четыре аргумента командной строки.) Второй парамеф, передаваемый функции main(), - это массив указателей на сфо-ки символов. Так как имя массива является постоянным указателем на первый элемент массива, можно объявить этот аргумент как указатель на указатель типа char, указатель на массив символов или массив массивов символов. Обычно первый аргумент называется а где (argument count - количество аргументов), однако вы можете присвоить ему любое имя, которое вам нравится. Второй аргумент зачастую называется argv (argument vector - вектор аргументов), однако это имя также не является обязательным. Как правило, с помощью а где проверяется количество установленных аргументов коммандной строки, после чего для доступа к ним используется argv. Обратите внимание: argv[0] - это имя профаммы, а argv[1] - первый аргумент коммандной сфо-ки. Если профамма принимает в качестве аргументов два числовых значения, нужно будет преобразовать их в сфоки. На занятии 21 вы узнаете, как выполнить это преобразование с помощью средств, предоставляемых стандартными библиотеками функций. В листинге 16.19 показан пример использования аргументов командной строки. Аисшииг 1G.19. ИсипАьзпваиив аргумвипшв кпмавувпО стрпкв sinclude <iostream.h> int main(int argc, char **argv) cout Received << argc << arguments...\ n ; for (int i=0; Kargc; 1++) cout << argument << 1 << ; << argv[i] << endl; return 0; > TestProgram Teach Yourself С++ In 21 Days Received 7 arguments... argument 0; TestProgram,exe argument 1; Teach argument 2: Yourself argument 3: С++ argument 4: In argument 5: 21 argument 6: Days примечание Вам придется либо запустить этот код из командной строки DOS, либо установить параметры командной строки с помощью компилятора (см. документацию компилятора). В функции malnO объявляются два аргумента: argc - целочисленное значение, указывающее число аргументов командной строки, и argv - указатель на массив строк. Каждый элемент этого массива представляет аргумент командной строки. Обратите внимание, argv можно также объявить как char argv[] или char[][]. Профаммист может выбрать вариант, который ему более по душе. Даже если в профамме этот аргумент будет объявлен как указатель на указатель, для доступа к определенным элементам можно воспользоваться индексом смещения элемента от начала массива. В строке 4 массив argv используется для вывода числа установленных аргументов командной строки. Всего их оказалось семь, включая имя профаммы. В строках 5 и 6 задается цикл for, который выводит значения всех аргументов командной строки по отдельности, обращаясь к ним по имени массива argv с указанием смещения [1]. Для вывода значений аргументов используется объект cout. Листинг 16.20 является переписанной версией листинга 16.18, в которой имя файла задается как аргумент командной строки. Аистииг IB.20. Исиодьзоваиив аргумвитов комаиуиоО строки 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Sinclude <fstream.h> class Animal { public: Animal(lnt weight, long days):ltsWeight(weight), itsNumberDaysAlive(days)( } Animal(){ } Int GetWeightOconst { return ItsWeight; } void SetWeight(int weight) { itsWeight = weight; > long GetDaysAliveOconst { return ItsNumberOaysAlive; } void SetDaysAlive(long days) { itsNumberOaysAlive = days; } private: int itsWeight; long ItsNumberOaysAlive; int main(int argc, char argv[]) возвращает 1 в случае ошибки {
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |