Professional Documents
Culture Documents
ndice
1 Entrada/Sada em ficheiros (arquivos) 2 Gravar (Salvar) os dados para um ficheiro(arquivo) 3 O que um ficheiro(arquivo)? 4 Ficheiros(Arquivos) binrios e tipo texto 5 biblioteca padro fstream 6 Abrir um ficheiro(arquivo) 7 Usando o Construtor 8 Usando a funo membro "open" 9 Comparando os dois mtodos (pela funo membro e pelo construtor) 10 Abrir um arquivo para leitura 11 Verificar se o ficheiro (arquivo) foi aberto. 12 Fechar um ficheiro (arquivo) 13 Looping pelo ficheiro (arquivo). 14 Manipuladores 14.1 Ajustando a largura da entrada/sada 14.2 Preenchimento de espaos em branco 14.3 Ajustando a preciso 15 Exerccios
O que um ficheiro(arquivo)?
http://pt.wikibooks.org/wiki/Programar_em_C%2B%2B/Entrada_e_sa%C3%ADda_de_dados_2 1/14
25/3/2014
Um arquivo uma coleo de dados que esto localizados numa memria persistente tipo hard drive, cd-rom, etc. Para identificarmos o arquivo podemos atribuir-lhe um nome (filename). Os "filenames" tm usualmente uma extenso, que determina o tipo de arquivo em sistemas operacionais semelhantes aos da Microsoft, mas que podem ser dispensados em sistemas operacionais que guardam as caractersticas dos arquivos no meio de armazenamento, tais quais sistemas UNIX e seus similares GNU/Linux, FreeBSD, etc... A extenso representada por 3 ou 4 letras que seguem aps o nome do arquivo e um ponto ".". Por exemplo: "joao.doc" ou "joao.odt". Isto diz-me que temos um ficheiro(arquivo) que se chama "joao", e que tem a extenso .doc que refere usualmente a documentos do WORD no primeiro caso e com extenso ".odt" do OpenOffice no segundo. Outros tipos de extenses podem ser ".xls" para documentos EXCEL, ".ods" para planilhas do OpenOffice. ou ainda ".cpp" para ficheiros(arquivos) de cdigos de c++.
Abrir um ficheiro(arquivo)
Um ficheiro(arquivo) deve ser aberto pelo programa para que o mesmo possa ser manipulado, a abertura do arquivo implica, entre outras coisas, em atribuir um identificador que nos permita ter acesso aos seus dados. necessrio criar uma linha de comunicao entre o arquivo e o objeto stream.
http://pt.wikibooks.org/wiki/Programar_em_C%2B%2B/Entrada_e_sa%C3%ADda_de_dados_2 2/14
25/3/2014
Podemos recorrer a dois mtodos para abrir um ficheiro (arquivo): 1. Usando um construtor; 2. Usando a funo membro chamada de "open".
Usando o Construtor
O construtor uma funo que automaticamente chamada quando tentamos criar uma instncia de um objeto.
f s t r e a ma f i l e ;
/ / c r i a d ou m ai n s t n c i ad of s t r e a mc h a m a d ad ea f i l e
Os construtores de objetos podem ser sobrecarregados, ou seja, para a mesma classe podemos ter um construtor sem argumentos, com um argumento, dois argumentos, etc. No exemplo anterior criamos um sem argumentos. Os construtores no retornam valores, geralmente o compilador reporta erro quando se declara funes que retornam valor e estas tm o mesmo nome da classe, pois este nome reservado para os construtores. Vamos dar um exemplo com dois argumento:
o f s t r e a mo u t f i l e( " j o a o . d o c " ,i o s : : o u t ) ;
Chama o construtor com dois argumentos, criando uma instncia de ofstream e abrindo o ficheiro(arquivo) "joao.doc" para operaes de sada.
http://pt.wikibooks.org/wiki/Programar_em_C%2B%2B/Entrada_e_sa%C3%ADda_de_dados_2
3/14
25/3/2014
Modo do sinalizador abertura (Flag) ios::app ios::ate ios::binary ios::in ios::out ios::trunc "Binary mode" "Input mode" "Output mode" "Append mode"
Descrio Todos os dados do arquivo so preservados e qualquer sada escrita a partir do fim do arquivo. Se o arquivo j existe,o programa vai diretamente ao seu fim.O modo de escrita ento feito de forma aleatria.Usado normalmente com arquivos do modo binrio(binary mode). Informaes so escritas na forma binria e no na forma textual(text mode). Leitura de informaes de arquivo(no ir criar um arquivo novo) Informaes sero escritas no arquivo. Se o arquivo j existe,suas informaes sero truncadas, outra forma de se dizer: deletadas e reescritas.
Os sinalizadores (flags) so nmeros em potncias da base binria, portanto podemos ter vrios flags ao mesmo tempo se usarmos o operador unrio para a operao "OU", como no exemplo abaixo:
Observe que estamos abrindo o arquivo "students.dat" em modo binrio e ao mesmo tempo com o modo "append", isto significa que abriremos o arquivo e poderemos preservar o seu contedo anterior inserindo os novos dados no fim do arquivo.
i n ta g e ; a g e = 3 9 ;
i n ta g e = 3 9 ;
http://pt.wikibooks.org/wiki/Programar_em_C%2B%2B/Entrada_e_sa%C3%ADda_de_dados_2
4/14
25/3/2014
A escolha do melhor mtodo em cada situao depende do contexto em que estamos criando o cdigo, geralmente quando j temos o objeto criado e ele est fechado podemos abrir um novo arquivo com ele e depois fech-lo novamente, isto nos sugere que usemos a funo open quando o objeto deve abrir arquivos diferentes em cada trecho de cdigo, embora que possam surgir outras funcionalidades, dependendo de como o projeto foi idealizado.
i f s t r e a ma r q ; a r q . o p e n( j o o . d o c ) ;
i f s t r e a ma r q( j o o . d o c ) ;
Ou ainda
f s t r e a mb l o c o ; b l o c o . o p e n ( " j o a o . d o c " ,i o s : : i n )
ou ainda
f s t r e a mb ( j o a o . d o c ,i o s : : i n )
H mais uma nota a fazer, se quisermos ler e escrever, no podemos usar o ofstream e o ifstream ao mesmo tempo, teremos de usar o fstream. Teremos de fazer:
f s t r e a ma( j o o . d o c ,i o s : : i n|i o s : : o u t ) ;
Neste caso, o comportamento padro preservar o contedo do ficheiro (arquivo) ou cri-lo caso ele no exista.
25/3/2014
Vamos verificar o que acontece quando tentamos abrir um arquivo que no existe, a primeira verso do nosso exemplo observa o comportamento bsico do fstream:
c o u t< <" ( a r q )="< <a r q< <e n d l ; / / i m p r i m eoo b j e t o c o u t< <" ( a r q . f a i l ( ) )="< <a r q . f a i l ( )< <e n d l ; / / c h a m of u n om e m b r of a i l # i f d e fW I N 3 2 s y s t e m( " p a u s e " ) ; # e n d i f } r e t u r n0 ;
Repare que o resultado a impresso do endereo, do objeto a de ifstream. d um ponteiro!! Agora, vajamos um exemplo mais completo:
i f( a r q . i s _ o p e n ( )& &a r q . g o o d ( ) ) { a r q> >s t r ; c o u t< <" c o n t e d o :\ n"< <s t r< <e n d l ;/ / i m p r i m eoc o n t e d od oa r q u i v o } a r q . c l o s e ( ) ;
# i f d e fW I N 3 2 s y s t e m( " p a u s e " ) ; # e n d i f
http://pt.wikibooks.org/wiki/Programar_em_C%2B%2B/Entrada_e_sa%C3%ADda_de_dados_2 6/14
25/3/2014
r e t u r n0 ;
Observe que aqui verificamos se o arquivo foi aberto com a funo membro is_open() que retorna verdadeiro "true" caso o arquivo foi aberto, depois verificamos se o arquivo foi aberto satisfatoriamente atravs da funo membro good(), que tambm retorna verdadeiro se o arquivo pode ser usado.
o f s t r e a mo u t f i l e ; o u t f i l e . o p e n ( " s t u d e n t s . d a t " ) ; / /. . . . o u t f i l e . c l o s e ( ) ;
Vamos criar um exemplo mais real. Queremos criar um programa que escreva informao inserida pelo utilizador num ficheiro por ns escolhido
i f( o u t f i l e . i s _ o p e n ( )& &o u t f i l e . g o o d ( ) )/ / v e r i f i c a m o ss ee s t t u d ob e m {c o u t< <" d i g i t eos e un o m e :" ; / / i m p r i m en oe c r ( m o n i t o r )af r a s e c i n . g e t l i n e ( d a t a ,8 0 ) ; / / c h a m af u n om e m b r og e t l i n ed oo b j e t oc i np a r a / / l e roq u ef o ie s c r i t op e l ou s u r i o o u t f i l e< <d a t a< <e n d l ; o u t f i l e . c l o s e ( ) ; / / c o l o c aoa r r a yn oo b j e t oc r i a d o . / / f e c h a m o soo b j e t o .
# i f d e fW I N 3 2 s y s t e m( " p a u s e " ) ; # e n d i f } r e t u r n0 ;
Podemos ir ver o novo ficheiro/arquivo com o nome joao.doc e tem l escrito aquilo que digitamos. Agora vamos tentar ler o que escrevemos no documento criado.
http://pt.wikibooks.org/wiki/Programar_em_C%2B%2B/Entrada_e_sa%C3%ADda_de_dados_2 7/14
25/3/2014
# i n c l u d e< f s t r e a m > # i n c l u d e< i o s t r e a m > u s i n gn a m e s p a c es t d ; i n tm a i n( ) { c h a rd a t a [ 8 0 ] ; i f s t r e a mi n f i l e ; i n f i l e . o p e n ( " j o a o . d o c " ) ; i f( i n f i l e . i s _ o p e n ( )& &i n f i l e . g o o d ( ) )/ / v e r i f i c a m o ss ee s t t u d ob e m {i n f i l e> >d a t a ; / / c o l o c a m o so sd a d o sa b e r t o sn oa r r a y c o u t< <d a t a< <e n d l ; i n f i l e . c l o s e ( ) ; } # i f d e fW I N 3 2 s y s t e m( " p a u s e " ) ; # e n d i f r e t u r n0 ; }
Repare que se tivssemos escrito duas palavras, apenas uma era apresentada (ela pra no primeiro whitespace), para isso necessitaramos de repetir:
# i n c l u d e< f s t r e a m > # i n c l u d e< i o s t r e a m > u s i n gn a m e s p a c es t d ; i n tm a i n( ) { c h a rd a t a [ 8 0 ] ; i f s t r e a mi n f i l e ; i n f i l e . o p e n ( " j o a o . d o c " ) ; i f( i n f i l e . i s _ o p e n ( )& &i n f i l e . g o o d ( ) )/ / v e r i f i c a m o ss ee s t t u d ob e m {i n f i l e> >d a t a ; / / c o l o c a m o so sd a d o sa b e r t o sn oa r r a y c o u t< <d a t a< <e n d l ; i n f i l e> >d a t a ; / / c o l o c a m o so sd a d o sa b e r t o sn oa r r a y c o u t< <d a t a< <e n d l ; i n f i l e . c l o s e ( ) ; } # i f d e fW I N 3 2 s y s t e m( " p a u s e " ) ; # e n d i f } r e t u r n0 ;
Agora j obtemos 2 palavras e so apresentadas em linhas diferentes. Mas temos de arranjar um mtodo para no estar a repetir constantemente, podemos fazer isso com
i n f i l e . g e t l i n e ( d a t a ,8 0 ) ;
25/3/2014
# i n c l u d e< s t r i n g > u s i n gn a m e s p a c es t d ; i n tm a i n( ) { s t r i n gd a t a ; o f s t r e a mo u t f i l e ; o u t f i l e . o p e n ( " j o a o . d o c " ) ; i f( o u t f i l e . i s _ o p e n ( )& &o u t f i l e . g o o d ( ) )/ / v e r i f i c a m o ss ee s t t u d ob e m { c o u t< <" W r i t i n gt ot h ef i l e "< <e n d l ; c o u t< <" = = = = = = = = = = = = = = = = = = = "< <e n d l ; c o u t< <" E n t e rc l a s sn a m e :" ; g e t l i n e ( c i n ,d a t a ) ; o u t f i l e< <d a t a< <e n d l ; c o u t< <" E n t e rn u m b e ro fs t u d e n t s :" ; c i n> >d a t a ; c i n . i g n o r e ( ) ; / / e s t af u n om e m b r op a r al i m p a roc a r a c t e r e / / n e w l i n ed oi n p u t b u f f e rd e p o i sd eu s a roo b j e t o / / c i nc o moo p e r a d o rd ee x t r a o> > o u t f i l e< <d a t a < <e n d l ; o u t f i l e . c l o s e ( ) ; } i f s t r e a mi n f i l e ; i n f i l e . o p e n ( " j o a o . d o c" ) ; i f( i n f i l e . i s _ o p e n ( )& &i n f i l e . g o o d ( ) )/ / v e r i f i c a m o ss ee s t t u d ob e m {c o u t< <" R e a d i n gf r o mt h ef i l e "< <e n d l ; c o u t< <" = = = = = = = = = = = = = = = = = = = = = "< <e n d l ; g e t l i n e ( i n f i l e ,d a t a ) ; c o u t< <d a t a< <e n d l ; g e t l i n e ( i n f i l e ,d a t a ) ; c o u t< <d a t a< <e n d l ; i n f i l e . c l o s e ( ) ; } # i f d e fW I N 3 2 s y s t e m( " p a u s e " ) ; # e n d i f } r e t u r n0 ;
i f s t r e a mi n f i l e ; i n f i l e . o p e n ( " j o a o . d o c " ) ; i f( i n f i l e . i s _ o p e n ( )& &i n f i l e . g o o d ( ) ) {i n f i l e> >d a t a ; w h i l e ( ! i n f i l e . f a i l ( ) ) {i n f i l e> >d a t a ; c o u t< <d a t a ; } } i n f i l e . c l o s e ( ) ;
http://pt.wikibooks.org/wiki/Programar_em_C%2B%2B/Entrada_e_sa%C3%ADda_de_dados_2
9/14
25/3/2014
Refazendo tudo
# i n c l u d e< f s t r e a m > # i n c l u d e< i o s t r e a m > # i n c l u d e< s t r i n g > u s i n gn a m e s p a c es t d ; i n tm a i n( ) { s t r i n gd a t a ; o f s t r e a mo u t f i l e ; o u t f i l e . o p e n ( " j o a o . d o c " ) ; i f( o u t f i l e . i s _ o p e n ( )& &o u t f i l e . g o o d ( ) ) { c o u t< <" E s c r e v e n d on oa r q u i v o "< <e n d l ; c o u t< <" = = = = = = = = = = = = = = = = = = = "< <e n d l ; c o u t< <" I n f o r m eon o m ed ac l a s s e :" ; g e t l i n e ( c i n ,d a t a ) ; o u t f i l e< <d a t a < <e n d l ; c o u t< <" i n f o r m eon m e r od ee s t u d a n t e s :" ; c i n> >d a t a ; c i n . i g n o r e ( ) ; o u t f i l e< <d a t a < <e n d l ; o u t f i l e . c l o s e ( ) ; } i f s t r e a mi n f i l e ; i n f i l e . o p e n ( " j o a o . d o c " ) ; i f( i n f i l e . i s _ o p e n ( )& &i n f i l e . g o o d ( ) ) { c o u t< <" L e n d od oa r q u i v o "< <e n d l ; c o u t< <" = = = = = = = = = = = = = = = = = = = = = "< <e n d l ; g e t l i n e ( i n f i l e ,d a t a ) ; w h i l e ( ! i n f i l e . f a i l ( ) ) { c o u t< <d a t a< <e n d l ; g e t l i n e ( i n f i l e ,d a t a ) ; } } i n f i l e . c l o s e ( ) ;
# i f d e fW I N 3 2 s y s t e m( " p a u s e " ) ; # e n d i f } r e t u r n0 ;
Agora vamos fazer o nosso programa mais modular: 1. . writeFile para abrir um arquivo para escrita usando o ofstream e 2. . readFile - ler do ficheiro (arquivo) usando o ifstream 3. . Cada funo ir verificar se o ficheiro (arquivo) foi aberto com sucesso
http://pt.wikibooks.org/wiki/Programar_em_C%2B%2B/Entrada_e_sa%C3%ADda_de_dados_2
10/14
25/3/2014
b o o lw r i t e F i l e( o f s t r e a m & ,c h a r * ) ; b o o lr e a d F i l e( i f s t r e a m & ,c h a r * ) ; i n tm a i n( ) { s t r i n gd a t a ; b o o ls t a t u s ; o f s t r e a mo u t f i l e ; s t a t u s=w r i t e F i l e ( o u t f i l e ," s t u d e n t s . d a t " ) ; i f( ! s t a t u s ) { c o u t< <" A r q u i v on op o d es e ra b e r t op a r ae s c r i t a . \ n " ; c o u t< <" P r o g r a m at e r m i n a n d o . . . \ n " ; r e t u r n0 ; } e l s e { c o u t< <" E s c r e v e n d on oa r q u i v o "< <e n d l ; c o u t< <" = = = = = = = = = = = = = = = = = = = "< <e n d l ; c o u t< <" I n f o r m eon o m ed ac l a s s e :" ; g e t l i n e ( c i n ,d a t a ) ; o u t f i l e< <d a t a < <e n d l ; c o u t< <" I n f o r m eon m e r od ee s t u d a n t e s :" ; c i n> >d a t a ; c i n . i g n o r e ( ) ; o u t f i l e< <d a t a < <e n d l ; o u t f i l e . c l o s e ( ) ; } i f s t r e a mi n f i l e ; s t a t u s=r e a d F i l e ( i n f i l e ," s t u d e n t s . d a t " ) ; i f( ! s t a t u s ) { c o u t< <" Oa r q u i v on op o d es e ra b e r t op a r al e i t u r a . \ n " ; c o u t< <" P r o g r a m at e r m i n a n d o . . . \ n " ; r e t u r n0 ; } e l s e { c o u t< <" L e n d od oa r q u i v o "< <e n d l ; c o u t< <" = = = = = = = = = = = = = = = = = = = = = "< <e n d l ; g e t l i n e ( i n f i l e ,d a t a ) ; w h i l e ( ! i n f i l e . f a i l ( ) ) { c o u t< <d a t a< <e n d l ; g e t l i n e ( i n f i l e ,d a t a ) ; } i n f i l e . c l o s e ( ) ; } # i f d e fW I N 3 2 s y s t e m( " p a u s e " ) ; # e n d i f } r e t u r n0 ;
b o o lw r i t e F i l e( o f s t r e a m &f i l e ,c h a r *s t r F i l e ) { f i l e . o p e n ( s t r F i l e ) ; r e t u r n! ( f i l e . f a i l ( ) | | ! f i l e . i s _ o p e n ( ) | | ! f i l e . g o o d ( ) ) ; } b o o lr e a d F i l e( i f s t r e a m &i f i l e ,c h a r *s t r F i l e ) { i f i l e . o p e n ( s t r F i l e ) ; r e t u r n! ( i f i l e . f a i l ( ) | | ! i f i l e . i s _ o p e n ( ) | | ! i f i l e . g o o d ( ) ) ; }
Manipuladores
Os objetos das classes "stream" podem ser configurados para fornecer e reportar os dados de maneira pr-formatada. Da mesma maneira que temos a formatao quando usamos funes de formatao, como printf() e scanf(), na linguagem C, podemos usar os manipuladores na linguagem C++ para informar os objetos
http://pt.wikibooks.org/wiki/Programar_em_C%2B%2B/Entrada_e_sa%C3%ADda_de_dados_2 11/14
25/3/2014
streams em que formato desejamos receber os dados deles ou fornecer para eles. Abaixo temos uma srie de manipuladores teis: Manipulator boolalpha noboolalhpa (padro) dec (padro) hex oct left right internal noshowbase (padro) showbase noshowpoint (padro) showpoint noshowpos (padro) showpos skipws (padro) noskipws fixed (padro) Scientific nouppercase (padro) uppercase Uso Faz com que variveis tipo bool sejam reportadas como "true" ou "false". Faz com que variveis tipo bool sejam reportadas omo 0 ou 1. Determina que variveis tipo inteiras (int) sejam reportadas na base 10. Determina que variveis tipo inteiras (int) sejam reportadas em hexadecimal. Determina que variveis tipo inteiras (int) sejam reportadas em octal. Faz com que textos sejam justificados a esquerda no campo de sada. Faz com que textos sejam justificados a direita no campo de sada. Faz com que o sinal de um nmero seja justificado a esquerda e o nmero seja justificado a direita. Desativa a exibio do prefixo que indica a base do nmero. Ativa a exibio do prefixo que indica a base do nmero. Mostra o ponto decimal apenas se uma parte fracionria existe. Mostra o ponto decimal sempre. Nenhum sinal "+" prefixado em nmeros positivos. Mostra um sinal "+" prefixado em nmeros positivos. Faz com que espaos em branco, tabulaes, novas linhas "\n" sejam descartados pelo operador de entrada >>. Faz com que espaos em branco, tabulaes, novas linhas "\n" no sejam descartados pelo operador de entrada >> Faz com que nmeros com ponto flutuante sejam mostrados em notao fixa. Faz com que nmeros com ponto flutuante sejam mostrados em notao cientfica. 0x mostrado para nmeros em hexadecimal e para notao cientfica. 0X mostrado para nmeros em hexadecimal e para notao cientfica.
25/3/2014
Ajustando a preciso
setprecision(n) - Ajusta a preciso de casas decimais em nmeros com ponto flutuante, para n dgitos. Este ajuste apenas visual, de forma que o manipulador no afeta o modo de clculo do nmero pelo programa. Exemplificando o uso de manipuladores:
# i n c l u d e< i o s t r e a m > # i n c l u d e< i o m a n i p > # i n c l u d e< s t r i n g > u s i n gn a m e s p a c es t d ; i n tm a i n ( ) { i n ti n t V a l u e=1 5 ; c o u t< <" N m e r oi n t e i r o "< <e n d l ; c o u t< <" P a d r o :"< <i n t V a l u e< <e n d l ; c o u t< <" O c t a l :"< <o c t< <i n t V a l u e< <e n d l ; c o u t< <" H e x a d e c i m a l :"< <h e x< <i n t V a l u e< <e n d l ; c o u t< <" A t i v a n d os h o w b a s e"< <s h o w b a s e< <e n d l ; c o u t< <" D e c i m a l :"< <d e c< <i n t V a l u e< <e n d l ; c o u t< <" O c t a l :"< <o c t< <i n t V a l u e< <e n d l ; c o u t< <" H e x a d e c i m a l :"< <h e x< <i n t V a l u e< <e n d l ; c o u t< <" D e s a t i v a n d os h o w b a s e"< <n o s h o w b a s e< <e n d l ; c o u t< <e n d l ; d o u b l ed o u b l e V a l=1 2 . 3 4 5 6 7 8 ; c o u t< <" N m e r o sc o mp o n t of l u t u a n t e "< <e n d l ; c o u t< <" P a d r o :"< <d o u b l e V a l< <e n d l ; c o u t< <s e t p r e c i s i o n ( 1 0 ) ; c o u t< <" P r e c i s od e1 0 :"< <d o u b l e V a l< <e n d l ; c o u t< <s c i e n t i f i c< <" N o t a oc i e n t f i c a :"< <d o u b l e V a l< <e n d l ; c o u t< <u p p e r c a s e ; c o u t< <" C a i x aa l t a :"< <d o u b l e V a l< <e n d l ; c o u t< <e n d l ; b o o lt h e B o o l=t r u e ; c o u t< <" B o o l e a n o "< <e n d l ; c o u t< <" P a d r o :"< <t h e B o o l< <e n d l ; c o u t< <b o o l a l p h a< <" B o o l A l p h aa t i v o :"< <t h e B o o l< <e n d l ; c o u t< <e n d l ; s t r i n gm y N a m e=" J o h n " ; c o u t< <" S t r i n g s "< <e n d l ; c o u t< <" P a d r o :"< <m y N a m e< <e n d l ; c o u t< <s e t w ( 3 5 )< <r i g h t< <" C o ms e t w ( 3 5 )e\ " r i g h t \ " :"< <m y N a m e< <e n d l ; c o u t . w i d t h ( 2 0 ) ; c o u t< <" C o mw i d t h ( 2 0 ) :"< <m y N a m e< <e n d l ; c o u t< <e n d l ; # i f d e fW I N 3 2 s y s t e m( " p a u s e " ) ; # e n d i f } r e t u r n0 ;
http://pt.wikibooks.org/wiki/Programar_em_C%2B%2B/Entrada_e_sa%C3%ADda_de_dados_2
13/14
25/3/2014
Exerccios
1. Quero colocar num documento, uma lista das combinaes possveis entre a,b,c e d. com a respectiva ordenao e quantidade; 2. . Quero que seja a pessoa a escolher o nome do ficheiro (arquivo) e escrever tambm a localizao; 3. . Quero que seja depois tansformado num sistema modular; 4. . Encontrar uma maneira para contar o n de espaos em branco, o n de caracteres "." que quisermos de um dado documento.
# i n c l u d e< i o s t r e a m > # i n c l u d e< f s t r e a m > u s i n gn a m e s p a c es t d ; i n tm a i n ( ) { i n tb l a n k _ c o u n t=0 ; i n tc h a r _ c o u n t=0 ; i n ts e n t e n c e _ c o u n t=0 ; c h a rc h ; i f s t r e a mo b j e c t ( " j o . t x t " ) ; i f( !o b j e c t ) { c o u t< <" E r r oa b r i n d oa r q u i v o . "< <e n d l ; r e t u r n1 ; } w h i l e( o b j e c t . g e t ( c h ) ) { s w i t c h( c h ) { c a s e'' : b l a n k _ c o u n t + + ; b r e a k ; c a s e' \ n ' : c a s e' \ t ' : b r e a k ; c a s e' . ' : s e n t e n c e _ c o u n t + + ; b r e a k ; d e f a u l t : c h a r _ c o u n t + + ; b r e a k ; } } c o u t< <" E x i s t e m"< <b l a n k _ c o u n t< <"e s p a o se mb r a n c o ; "< <e n d l ; c o u t< <" E x i s t e m"< <c h a r _ c o u n t< <"c a r a c t e r e s ; "< <e n d l ; c o u t< <" E x i s t e m"< <s e n t e n c e _ c o u n t< <"s e n t e n a s . "< <e n d l ; # i f d e fW I N 3 2 s y s t e m( " p a u s e " ) ; # e n d i f } r e t u r n0 ;
Obtido em "http://pt.wikibooks.org/w/index.php? title=Programar_em_C%2B%2B/Entrada_e_sada_de_dados_2&oldid=256748" Categoria: Livro/Programar em C++ Esta pgina foi modificada pela ltima vez (s) 23h21min de 28 de maio de 2013. Este texto disponibilizado nos termos da licena Creative Commons Atribuio-Compartilhamento pela mesma Licena 3.0 Unported; pode estar sujeito a condies adicionais. Consulte as Condies de Uso para mais detalhes.
http://pt.wikibooks.org/wiki/Programar_em_C%2B%2B/Entrada_e_sa%C3%ADda_de_dados_2 14/14