Ir para conteúdo
Fórum Script Brasil
  • 0

Adicionar Arquivos


Leonardo Prass

Pergunta

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 para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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.

Editado por Leonardo Prass
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152.1k
    • Posts
      651.8k
×
×
  • Criar Novo...