Полезно за вас: Речник | Игри | Новини | Фирми | Рецепти | Обяви
Начало на реферати

Някои особености на С++


Информационни технологии | 2009-12-04 | 58 сваляния

Някои особености на С++

  1. Нови възможности за вход/изход

cout Поток за изход (stdout)

cout << израз от произволен тип; //Потокът cout получава

//стойността на израза

cin Поток за вход (stdin)

cin >> променлива от произволен тип; //Променлива получава стойност

//от входния поток cin

#include

void main()

{ int n;

unsigned q=63000;

float x=12.3456789;

char c=a,*ch=C++;

cout <<n=<<n<<,q=<<q<<n; //n=25,q=63000

cout<<x=<<x<<n; //x=12.3456789

cout<<c=<<c<<,ch=<<ch<<n; //c=a,ch=C++

}

#include

void main(0

{ char t[80];

int i=0;

cout<<Въведи символи с точка на края.n;

do { cin>>t[i];} while(t[i++]!=.); //няма проверка за

//излизане извън масива

cout<<nnПрочетени символиn;

i=0;

do { cout<<t[i]; } while(t[i++]!=.;

}

  1. Форматиране на вход/изхода

Форматиращи флагове

Освен автоматичното форматиране (показано в по-горните примери) е възможно явно форматиране на обмена със стандартните входно/изходни устройства. Дефинирани са флагове (битове) от клас ios, чието състояние определя формата. Установяването им в 0 или 1 се извършва с предварително дефинирани функции.

Бит

Име на флаг

Значение

0

skipws

пропускане на празните символи (при извличане от входен поток)

1

left

подравняване вляво (при вмъкване в изходен поток)

2

right

подравняване вдясно (при вмъкване в изходен поток)

3

internal

запълване след знака или базата

4

dec

преобразуване на числата в десетична бройна система

5

oct

преобразуване на числата в осмична бройна система

6

hex

преобразуване на числата в шестнадесетична бройна система

7

showbase

вмъкване на базата на системата

8

showpoint

вмъкване на десетичната точка

9

uppercase

вмъкване на главни шестнадесетични цифри

10

showpos

вмъкване на знак + при положителни числа

11

scientific

представяне на числата в научен формат с експонента (при вмъкване в изходен поток)

12

fixed

представяне на числата във формат с фиксирана точка (при вмъкване в изходен поток)

13

initbuf

изпразване на буферите след всяко вмъкване

14

stdio

изпразване на буферите след всяко вмъкване в stdout и stderr

Установяване на форматиращите флагове (прототипи на функции):

long setf(long flags); //установява флаг

long unsetf(long flags); //премахва установен флаг

long flags(long mask); //установява група от флагове

Извикване на функция:

поток.setf(параметри);

Пример

#include

void main()

{ cout.setf(ios::hex | ios::showbase); //установява флагове

cout<<100<<'n'; //извежда: 0х64

cout.unsetf(ios::showbase); //премахва установен флаг

cout<<100<<'n'; //извежда: 64

cout.setf(ios::uppercase | ios::scientific);//установява флагове

cout<<100.12; //извежда: 1.001200Е+02

cout.unsetf(ios::uppercase); //премахва установен флаг

cout<<"n"<<100.12; //извежда: 1.001200е+02

}

  • Манипулатори

Дефинициите на манипулаторите се намират във файла iomanip.h, който трябва да се включи.

  1. Манипулатори без параметри

    Име

    Поток

    Действие

    dec

    Вход/изходен

    Активира флаг десетично преобразуване

    hex

    Вход/изходен

    Активира флаг шестнадесетично преобразуване

    oct

    Вход/изходен

    Активира флаг осмично преобразуване

    ws

    Входен

    Активира флаг пропускане на празни символи

    endl

    Изходен

    Вмъква нов ред и изпразва буфера на потока

    ends

    Изходен

    Вмъква символа край на низ ()

    flush

    Изходен

    Изпразва буфера на потока

  2. Манипулатори с параметри

Име

Поток

Действие

setbase(int)

Вход/изходен

Дефинира основата на преобразуване

resetiosflags(long)

Вход/изходен

Нулира зададените флагове

setiosflags(long)

Вход/изходен

Активира зададените флагове

setfill(int)

Вход/изходен

Задава символ за запълване

setprecision(int)

Вход/изходен

Задава числовата стойност

setw(int)

Вход/изходен

Задава размера на полето

Пример илюстриращ използване на манипулатори.

#include

#include

void main()

{ cout<<hex<<100<<endl;

cout<<setfill('*')<<setw(10);

cout<<resetiosflags(ios::hex)<<2345<<endl;

cout<<setiosflags(ios::scientific)<<22.33<<endl;

cout<<setprecision(2)<<setw(16)<<12.34567<<endl;

}

Резултати от изпълнение

64

******2345

2.233000е+01

********1.23е+01

  1. Деклариране на променливи на произволно място в текста

for(int i=0;;)

.

  1. Параметри по подразбиране последни в списъка на параметри

фиксират се в декларацията

#include

void f(int,int=12); //втори параметър е по подразбиране

void main()

{ int n=10,p=20;

f(n,p); //нормално извикване

f(n); //извикване с един параметър

} //f(); - грешно извикване

void f(int a,int b)

{ cout<<a=<<a<<,b=>><<b<<n; }

  1. Динамична памет заделяне и освобождаване

int *ad; //указател към динамична зона

ad=new int[50]; //заделяне на динамична памет от 50 байта

delete ad; //освобождаване на заделената памет

КЛАСОВЕ И ОБЕКТИ

КЛАС: Тип, дефиниран от потребителя, състоящ се от членове данни

(променливи) и членове функции (методи)

ОБЕКТ: Дефинира се като променливa от даден клас

Дефиниране на КЛАС: Член ДАННИ (Променливи)

Член ФУНКЦИИ (Методи)

  • Декларация на клас

  • Дефиниция на член-функции

Общ вид

class име_на клас {

//Декларации на член-променливи

Някои особености на С++

Добави своя коментар:



Тагове от реферата: , , , , ,