Някои особености на С++
| Информационни технологии | 2009-12-04 | 58 сваляния |
Някои особености на С++
-
Нови възможности за вход/изход
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++]!=.;
}
-
Форматиране на вход/изхода
Форматиращи флагове
Освен автоматичното форматиране (показано в по-горните примери) е възможно явно форматиране на обмена със стандартните входно/изходни устройства. Дефинирани са флагове (битове) от клас 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, който трябва да се включи.
-
Манипулатори без параметри
Име
Поток
Действие
dec
Вход/изходен
Активира флаг десетично преобразуване
hex
Вход/изходен
Активира флаг шестнадесетично преобразуване
oct
Вход/изходен
Активира флаг осмично преобразуване
ws
Входен
Активира флаг пропускане на празни символи
endl
Изходен
Вмъква нов ред и изпразва буфера на потока
ends
Изходен
Вмъква символа край на низ (


