Manipuladores de Formatos
Embed Size (px)
description
Transcript of Manipuladores de Formatos
-
Manipuladores de FormatosTodas as especificaes de manipuladores predefinidos na linguagemforam includas no ficheiro iomanip.h. Se for necessrio usar osmanipuladores o ficheiro iomanip.h deve ser includo no programa.Existem os manipuladores simples (sem argumentos) e osmanipuladores com argumentos.Os manipuladoressimplesso os seguintes:oct - o valor octal;dec - o valor decimal;hex - o valor hexadecimal;endl - \n e apagar o buffer;ends - \0 e apagar o buffers para sada ;flush - apagar o buffers para sada ;ws - eliminao de espaos entre smbolos
- Os manipuladores com argumentos so seguintes:setfill(int caracter);setprecision(int pr);setw(int w);resetiosflags(long n);setiosflags(long n);etc.cout
- A rea de aco para cada manipulador comea com o aparecimentodo manipulador e acaba depois de cancelado por outro manipuladorclass my_f {};ostream& operator
- Podemos tambm definir os manipuladores novos com argumentos.Vamos considerar, por exemplo, o manipulador wp(n,m) queespecifica a largura do campo n e preciso m para os valores comvrgula flutuante.class my_manip{int n,m;ostream& (*f)(ostream&,int,int);public:my_manip(ostream& (*F)(ostream&,int,int),int N, int M) : f(F), n(N), m(M) {}friend ostream& operator
-
ostream& wi_pre(ostream& s, int n, int m){s.width(n);s.flags(ios::fixed);s.precision(m);return s;}
my_manip wp(int n, int m){return my_manip(wi_pre,n,m);}
int main(int argc, char* argv[]){cout
-
Strings e Ficheiros - Classes (1)Existem classes especficas para trabalhar com strings e ficheiros em C++
As operaes I/O efectuam-se atravs de streamsFicheiros e Strings
-
Strings e Ficheiros - Classes (2)Existem 3 tipos de streamsstreams de leiturastreams de escritastreams de leitura/escrita
-
Strings e Ficheiros - Classes (3)Classes de leitura para ficheiros e strings:ifstreamistrstream
Classes de escrita para ficheiros e strings:ofstreamostrstream
-
Strings e Ficheiros - Classes (4)Classes de leitura/escrita para ficheiros e strings:fstreamstrstream
-
Strings e Ficheiros - Classes (5)Todas estas classes so derivadas da classe ios
-
STRINGS
-
Strings - Construo (1)Classe istrstreamo objecto istrstream pode ser construdo da seguinte forma:
istrstream in_str(char* psz);
o objecto in_str ir ficar associado a uma string apontada por psz
-
Strings - Construo (2)Classe istrstreamo objecto istrstream tambm pode ser construdo da seguinte forma:
istrstream in_str(char* pch, int nLength);
o objecto in_str ir ficar associado a um array de caracteres normal com nLength caracteres
-
Strings - Construo (3)Classe ostrstreamo objecto ostrstream pode ser construdo da seguinte forma:
ostrstream out_str;
criado um objecto out_str para escrita com reserva dinmica de memria para novos caracteres
-
Strings - Construo (4)Classe ostrstreamo objecto ostrstream tambm pode ser construdo da seguinte forma:
ostrstream out_str(char* pos, int Len, int OpenMode);
OpenMode pode especificar ios::app ou ios::atepos aponta para uma string
-
Strings - Construo (5)Classe strstream = istrstream + ostrstreamo objecto strstream pode ser construdo da seguinte forma:
strstream io_str;
objecto io_str criado com buffer interno e dinmico, inicialmente vazio
-
Strings - Construo (6)Classe strstream = istrstream + ostrstreamo objecto strstream tambm pode ser construdo da seguinte forma:
strstream io_str(char* pos, int Len, int OpenMode);
pos aponta para uma string j existente com Len caracteres
-
Strings - Construo (7)
Sempre que possvel deve deixar-se o objecto efectuar a reserva dinmica do buffer interno.
-
Strings - Construo (7)char* a_str = "Ola"; // 3 caracteresostrstream str(a_str, 10);
str
-
Strings - Construo (8)A construo aconselhada seria:
ostrstream str;str
-
FICHEIROS
-
1. #include
2. fstream source;
3. source.open(my.txt", ios::in | ios::nocreate); if(!source.good()) {cerr (fstream& source, set &S){................................return source;}
5. source.close();
-
Ficheiros - Construo (1)Classe ifstreamo objecto ifstream pode ser construdo da seguinte forma:
ifstream in_file;
o objecto in_file criado mas nenhum ficheiro aberto
-
Ficheiros - Construo (2)Classe ifstreamo objecto ifstream tambm pode ser construdo da seguinte forma:
ifstream in_file("file.dat");
o objecto in_file criado e o ficheiro file.dat aberto em modo de texto para leitura
-
Ficheiros - Construo (3)
Qualquer construtor para objectos do tipo ficheiro, constri apenas o objecto ficheiro sem abrir o ficheiro fsico se no for dado o nome do ficheiro aquando da construo
-
Ficheiros - Construo (4)Classe ofstreamo objecto ofstream pode ser construdo da seguinte forma:
ofstream out_file("file.dat", ios::binary);
o objecto out_file quando criado, associado ao ficheiro file.dat. Este aberto em modo binrio para escrita
-
Ficheiros - Construo (5)O objecto na construo aceita os seguintes parmetros:
FlagSignificadoios::appos dados so escritos no fim do ficheiroios::ateo apontador vai para o fim do ficheiro quando este abertoios::ino ficheiro aberto para leituraios::outo ficheiro aberto para escritaios:.binaryo ficheiro aberto em modo binrio. Se ausente o ficheiro aberto em modo texto.ios::truncapaga o contedo de um ficheiro quando este aberto para escritaios::nocreatefalha a abertura do ficheiro se este no existir (apenas para ficheiro de escrita)ios::noreplaceno substitui um ficheiro existente. Se este existir, falha a abertura
-
Ficheiros - Construo (6)Classe fstream = ifstream + ofstreamo objecto fstream pode ser criado da seguinte forma:
fstream io_file("file.dat", ios::in | ios::out | ios::binary);
criado o objecto io_file para leitura/escrita em modo binrio, associado ao ficheiro file.dat
-
Ficheiros - Verificao (1)
A verificao da abertura efectiva de um ficheiro deve ser sempre realizada antes de efectuar qualquer operao I/O sobre este
-
Ficheiros - Verificao (2)Exemplos para verificao da abertura de um ficheiro
if(in_file.bad()) {cerr
-
Ficheiros - Verificao (3)O mtodo eof() permite saber se foi atingido o fim do ficheiro
while(!io_file.eof()) {// l ficheiro// }
-
LEITURA / ESCRITA
-
Streams - Leitura/Escrita (1)
A leitura de strings e ficheiros efectuada de forma semelhanteAs suas classes derivam de uma classe I/O comum - classe ios
-
Streams - Leitura/Escrita (2)char str[10];istrstream in_str("Ola");ifstream in_file("file.dat");
in_str >> str;in_file >> str;in_str.read(str, 3);in_file.read(str, 3);in_str.getline(str,3);in_file.getline(str, 3);
Leituras de uma string e de um ficheiro para str efectuadas de forma idntica
-
Streams - Leitura/Escrita (3)char str1[] = "PP1";strstream out_str;fstream out_file("file2.dat", ios::out);
out_str
- int main(int argc, char* argv[]){char str[10];istrstream in_str("Ola");ifstream in_file("file.dat");// Aveiroin_file.getline(str, 5);cout str;cout str;// O resultado: rocout
-
Destrutores (1)
Todos os objectos tm destrutores que libertam o espao reservado para o objecto
-
Destrutores (2)
No caso de ficheiros boa poltica efectuar o fecho do objecto (ficheiro) assim que este j no seja necessrio. Desta forma so libertados recursos do sistema mais cedo
- int main(int argc, char* argv[]){fstream source,destination;source.open("source.txt", ios::in | ios::nocreate);if(!source.good()) { cerr
- char str[50];source >> str;cout str;cout str;cout str;cout
- int main(int argc, char* argv[]){fstream source,destination;StrString my_str;int no_of_caracteres = 0, no_of_words = 0;///////////////////////////////////////////////////////////////////// Abertura dos ficheiros///////////////////////////////////////////////////////////////////source.open("source.txt", ios::in | ios::nocreate);if(!source.good()) {cerr
-
source >> my_str;// leitura da linhano_of_caracteres = my_str.length();// incrementa // o n de caracteresno_of_words = my_str.words();// incrementa o n de palavrascout