Потоки и файлы
Потоковые классы
Флаги форматирования
Установка флагов форматирования
Манипуляторы потоков
Манипуляторы с аргументами
Методы класса ios
istream
ostream
Функции флагов ошибки
Пример
Пример
Проверка ввода
Пример
51.74K
Категория: ПрограммированиеПрограммирование

Потоки и файлы

1. Потоки и файлы

Часть 1
Потоки

2. Потоковые классы

ios
istream
fstreambase
ostream
iostream
ifstream
fstream
ofstream

3. Флаги форматирования


skipws
left, right
dec, oct, hex
showpoint
scientific, fixed

4. Установка флагов форматирования

• setf(ios::flag_name)
• unsetf(ios::flag_name)
cout.width(10);//метод класса ios
cout.unsetf(ios::dec);
cout.setf(ios::hex|ios::right);
cout<<12; //
c
/*
Вместо комбинации setf\unsetf можно
использовать
cout.setf(ios::hex|ios::right,ios::basefield)
;
*/

5. Манипуляторы потоков

• dec, oct, hex
• endl
• …
cout<<hex<<12; //c

6. Манипуляторы с аргументами


setw
setfill
setprecision
setiosflags, resetiosflags
#include<iomanip>
cin >> a;
cout << "\nyour input\n" <<
resetiosflags(ios::dec) <<
setiosflags(ios::hex)
<<
setw(10)<<
setfill('n')<<a;

7. Методы класса ios


c = fill (), fill (c)
p = precision(), precision(p)
w = width(), width(w)
setf(f), unsetf(f)
cout.width(10);
cout.fill('_');
cout.unsetf(ios::dec);
cout.setf(ios::hex|ios::right);
cout<<12;
//_________c

8. istream


>>
get(c), get(str,max), get(str,max,delim)
getline(str,max,delim), getline (str,max)
ignore(max,delim)
putback(c)
peek(c)
gcount()
read(str,max)
seekg(), seekg(pos,seek_dir)
tellg()

9. ostream


<<
put(c)
flush()
write(str,size)
seekp(pos)
seekp(pos,seek_dir)
tellp()

10. Функции флагов ошибки


eof()
fail()
good()
clear(int=0)

11. Пример

char c, str[10];
cin >> c;
cout<<"c by cin "<<c<<endl;
cin.get(c);
cout<<"c by get "<<c<<endl;
cin.get(str,9);
cout<<"str by get "<<str<<endl;
cin.get(c);
cout<<"c by get again "<<c<<endl;
cin.ignore(9,'\n');
cin.get(str,9,'_');
cin.ignore(9,'\n');
cout<<endl<<"str until '_' or <9\n"<<str<<endl;
cin.get(str,5);
cin.ignore(9,'\n');
cout<<"strlen<5"<<endl<<str;
system("pause");

12. Пример

char str[100];
cin.getline(str,99);
cout<<cin.gcount()<<" keys: " <<str<<endl;
cin.getline(str,99,'.');
cout.flush();
cout<<static_cast<char>(cin.peek());
cin.putback(' ');//тип int
cout<<str<<endl;
cout<<cin.get();//32
cout.put('+');
system("pause");

13. Проверка ввода

int i;
while (true){
cout<<"\ninput integer value\n";
cin.unsetf(ios::skipws);//разделители
cin >>i;
if (cin.good()){
cin.ignore(10,'\n');
break;
}
if (cin.fail())cout<<"fail";
cin.clear();
cin.ignore(10,'\n');
}
cout<<endl<<i;

14. Пример

int i; char str[100];
while (true){
cout<<"\ninput integer value\n";
cin.unsetf(ios::skipws);
cin >>str;
for (int j=0; j<strlen(str); j++)
if (str[j]<='0'||str[j]>='9'){
cin.clear(ios::failbit);//устанавливаем
break;//флаг ошибки вручную
}
if (cin.good()){
cin.ignore(100,'\n'); break;}
if (cin.fail())cout << "fail";
cin.clear();
cin.ignore(100,'\n');
}
i = atoi(str);
cout << endl << i;
English     Русский Правила