Jump to content
Fórum Script Brasil
  • 0

Adicionar Arquivos


Leonardo Prass
 Share

Question

Como Adicionar um Arquivo de texto em c++ ex, eu Digito o nome do arquivo e ele procura e o abre  como faco? esse codigo abre um arquivo de texto comum sem acentos.

#include <iostream>
#include <string.h>
#include<stdlib.h>
#include<stdio.h>
#include <fstream>
using namespace std;
int main() {
using namespace std;

ifstream entrada;
#include <fstream>
char frase;
entrada.open("leo.txt");//NOME DO ARQUIVO QUE ELE ABRIRA
entrada.get(frase);
while(!entrada.eof()){

while(frase!='\n' && !entrada.eof()){
cout<<frase;

entrada.get(frase);
}

if(!entrada.eof())
entrada.get(frase);
}
entrada.close();}

 

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

você pode fazer uso da função membro is_open(); que te retorna um "true" caso o arquivo tenha sido aberto corretamente, ou você pode usar as exceptions(excepções), nesse caso é algo complicado.

Un exemplo com manejo excepções:

#include <iostream>
#include <fstream>

int main() {
    int i;
    std::ifstream file; //crie um archivo na mesma pasta e ponha um int dentro na primeira linha.
    std::string nome;
    
    try { //tentamos abrir e ler
        std::cout << "indique o nome do arquivo: ";
        std::cin >> nome;

        file.open( (nome+".txt"), std::ios::in | std::ios::binary ) ;
        if ( !file ){ 
            throw std::ios::failure ( "Erro ao abrir o arquivo!" ); //seteamos um aviso caso nao seja possivel abrir
        }
        // sem erro desde aqui
        file >> i; //si chegamos aqui lemos um inteiro
        // ...
    } catch ( const std::exception& e ) { 
        std::cerr << e.what() << '\n' ; //Si nao abriu lançamos o aviso, podemos terminar o programa com um return, leberar memoria antes de sair etc etc
    }

    std::cout << i;

    file.close();
    return 0;
}

 

is_open():

#include <iostream>
#include <fstream>

int main() {
    int i;
    std::ifstream file; //crie um archivo na mesma pasta e ponha um int dentro na primeira linha.
    std::string nome;
    std::cout << "indique o nome do arquivo: ";
    std::cin >> nome;
    file.open ( ( nome + ".txt" ), std::ios::in | std::ios::binary ) ;
    
    if ( file.is_open() ) {
        file >> i;
        std::cout << i;
    
        file.close();
    
    }else{
        std::cout << "Nao foi possivel abrir o arquivo" << std::endl;
    }
    
    
    return 0;
}

 

Crie um arquivo de texto com o nome que você quiser, ponha um um int na primeira linha para fazer uma prova, logo quando o programa perguntar o nome ponha o nome sem o .txt.

Link to comment
Share on other sites

  • 0

Que compilador você esta usando? Me funciona perfeito.

Prove:

nome =  nome + ".txt";
file.open ( nome, std::ios::in | std::ios::binary );

ou

nome =  nome + ".txt";
file.open ( nome.c_str(), std::ios::in | std::ios::binary );

 

Link to comment
Share on other sites

  • 0

Com essa funcionou?:

nome =  nome + ".txt";
file.open ( nome.c_str(), std::ios::in | std::ios::binary );

 

O primeiro parâmetro da função membro open espera um const char*, nome.c_str() devolve o string convertido em const char*. Outra coisa que me dei conta... tire o std::ios::binary, é para arquivos binários.

Al parecer deveria produzir um cast implícito o algo, coisa que no meu computador sim se produziu, porem no seu al parecer não.

Link to comment
Share on other sites

  • 0

já tinha tirado e já consegui imprimir o arquivo de texto porem como fazer para tirar os espacos do arquivo  e ver seu tamanho?

estou sem o código neste computador colocarei logo mais.

mais e praticamente o codigo acima com alguma alterações 

  if ( arquivo.is_open() ) {
while(!arquivo.eof()){
while(i!='\n' && !arquivo.eof()&& i!='\0'){
 setlocale(LC_ALL, "Portuguese"); 
cout<<frase;


arquivo.get(frase);

le o arquivo ate o fim,frase ou texto.

Edited by Leonardo Prass
Link to comment
Share on other sites

  • 0

Para substituir palavras por outras é mais complicado, você tem que anotar a posição onde começa a palavra com tellg e tellp, para logo poder voltar atrás usando seekg e seekp, algo complexo. você se desenvolve com soltura com streams e arquivos, você tem bem claro o conceito de arquivos? A maioria dessas funções você tem que se desenvolver com soltura: http://www.cplusplus.com/reference/fstream/fstream/

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.1k
×
×
  • Create New...