Manipuladores de Formatos

of 43 /43
Manipuladores de Formatos especificações de manipuladores predefinidos na li ncluídas no ficheiro iomanip.h. Se for necessário u adores o ficheiro iomanip.h deve ser incluído no pr tem os manipuladores simples (sem argumentos) e os manipuladores com argumentos. Os manipuladores simples são 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 buffer só para saída ; flush - apagar o buffer só para saída ; ws - eliminação de espaços entre símb

Embed Size (px)

description

Manipuladores de Formatos. Todas as especificações de manipuladores predefinidos na linguagem foram incluídas no ficheiro iomanip.h . Se for necessário usar os manipuladores o ficheiro iomanip.h deve ser incluído no programa. Existem os manipuladores simples (sem argumentos) e os - PowerPoint PPT Presentation

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