none
Pesquisar dados em um arquivo .txt C++ RRS feed

  • Pergunta

  • Bom dia!

    Como faço para implementar o código de pesquisa no C++ para pegar dados de um arquivo txt?

    Desde já agradeço!

    terça-feira, 11 de junho de 2013 13:17

Todas as Respostas

  • Qual é o código em questão? Poste-o.

    Assembly, Delphi and C.

    terça-feira, 11 de junho de 2013 13:40
  • Qual é o código em questão? Poste-o.

    Assembly, Delphi and C.

    #include <iostream>
    #include <fstream>
    #include <iomanip>
    #include <string>
    using namespace std;

    float valor_cp, valor_cr;
    int cod_cp=1, cod_opcao=1, opcao;
    string nome_forn, categoria_cp, dtVenc_cp, nome_cl, categoria_cr, dtVenc_cr;

    void menu()
    {
    system("cls");
    cout<<"Escolha uma opcao:\n\n"
    <<"\t0 - Sair\n"
    <<"\t1 - Incluir Contas a pagar\n"
    <<"\t2 - Incluir Contas a receber\n"
    <<"\t3 - Relatorio contas a pagar\n"
    <<"\t4 - Relatorio contas a receber\n"
    <<"\t5 - Relatorio Saldo\n"
    <<"\t6 - Pesquisar\n\n";
    cin>>opcao;
    }

    void login()
    {
    int senha;

    cout<<"\nInforme a senha:";  
    cout<<"\nInfome a senha contendo somente NUMEROS!\n";
    cin>>senha;

    if (senha==1234)
    {
    menu();
    }
    else 
    {
    system("cls");
    cout<<"\n Senha ou usuario invalido!";
    cout<<"\n Tente Novamente:\n\n";
    login();
    }
    system("pause");
    }

    void cadastro_cp()
    {

    ofstream cp;
    system("cls");

    cp.open("c:/COMUM//cp.txt", ios::app); //abre no modo "append" acrescentar no final
    if(!cp.is_open()) //Se não abriu o arquivo exibe mensagem de erro e sai
    {
    cout<<"Erro ao abrir o arquivo\n";
    system("pause");
    exit(1);
    }

    cout<<"\nCadastre contas a pagar:\n";
    cout<<"Valor: R$";
    cin>>valor_cp;
    cout<<"\nInforme a data de vencimento: ";
    cin>>dtVenc_cp;
    cout<<"\nInforme a categoria: (imposto, mensalidade, telefone, luz, etc.) ";
    cin>>categoria_cp;
    cout<<"\nNome fornecedor: ";
    cin.ignore(); //ignora o ultimo \n (salto de linha) digitado acima
    getline(cin, nome_forn); //lê uma linha inteira

    cp<<"Valor: "<<valor_cp <<endl <<"Data de vencimento: "<<dtVenc_cp <<endl <<"Categoria: "<<categoria_cp <<endl <<"Nome fornecedor: "<<nome_forn <<endl<<endl;
    cp.close();
    }

    void cadastro_cr()
    {

    ofstream cr;
    system("cls");

    cr.open("c:/COMUM//cr.txt", ios::app); //abre no modo "append" acrescentar no final
    if(!cr.is_open()) //Se não abriu o arquivo exibe mensagem de erro e sai
    {
    cout<<"Erro ao abrir o arquivo\n";
    system("pause");
    exit(1);
    }

    cout<<"\nCadastre contas a receber:\n";
    cout<<"Valor: R$";
    cin>>valor_cr;
    cout<<"\nInforme a data de recebimento: ";
    cin>>dtVenc_cr;
    cout<<"\nInforme a categoria: (servico, produto, etc.) ";
    cin>>categoria_cr;
    cout<<"\nNome cliente: ";
    cin.ignore(); //ignora o ultimo \n (salto de linha) digitado acima
    getline(cin, nome_cl); //lê uma linha inteira

    cr<<"Valor: "<<valor_cr <<endl <<"Data de vencimento: "<<dtVenc_cr <<endl <<"Categoria: "<<categoria_cr <<endl <<"Nome cliente: "<<nome_cl <<endl<<endl;
    cr.close();
    }

    void relatorio_cp()
    {
    ifstream cp("c:/COMUM//cp.txt");
    if(!cp.is_open())
    {
    cout<<"Erro ao abrir o arquivo\n\n";
    system("pause");
    exit(1);
    }
    system("cls");

    //cout<<"COD"<<"\t" <<"VALOR"<<"\t" <<"DATA"<<"\t" <<"VENC"<<"\t" <<"CATEGORIA"<<"\t" <<"FORNECEDOR"<<"\n";
    while(!cp.eof()) //enquanto não for o fim do arquivo de clientes
    {
    //string cod_cp;
    string valor_cp;
    string dtVenc_cp;
    string categoria_cp;
    getline(cp, nome_forn); //obtem o nome (uma linha inteira)
    cout<<endl;

    cp/*>>cod_cp*/ >>valor_cp >>dtVenc_cp >>categoria_cp;
    cp.ignore(); //ignora o \n após
    if(cp.good()); //se o dado estiver ok...
    {
    //cout/*<<left<<setw(30)*/<<cod_cp;
    cout/*<<left<<setw(30)*/<<valor_cp;
    cout/*<<left<<setw(30)*/<<dtVenc_cp;
    cout/*<<left<<setw(30)*/<<categoria_cp;
    cout/*<<left<<setw(30)*/<<nome_forn;
    }
    }
    cout<<endl<<endl;
    system("pause");
    }

    void relatorio_cr()
    {
    ifstream cr("c:/COMUM//cr.txt");
    if(!cr.is_open())
    {
    cout<<"Erro ao abrir o arquivo\n\n";
    system("pause");
    exit(1);
    }
    system("cls");

    //cout<<"COD"<<"\t" <<"VALOR"<<"\t" <<"DATA"<<"\t" <<"VENC"<<"\t" <<"CATEGORIA"<<"\t" <<"CLIENTE"<<"\n";
    while(!cr.eof()) //enquanto não for o fim do arquivo
    {
    //string cod_cr;
    string valor_cr;
    string dtVenc_cr;
    string categoria_cr;
    getline(cr, nome_cl); //obtem o nome (uma linha inteira)
    cout<<endl;

    cr/*>>cod_cr*/ >>valor_cr >>dtVenc_cr >>categoria_cr;
    cr.ignore(); //ignora o \n após
    if(cr.good()); //se o dado estiver ok...
    {
    //cout/*<<left<<setw(30)*/<<cod_cr;
    cout/*<<left<<setw(30)*/<<valor_cr;
    cout/*<<left<<setw(30)*/<<dtVenc_cr;
    cout/*<<left<<setw(30)*/<<categoria_cr;
    cout/*<<left<<setw(30)*/<<nome_cl;
    }
    }
    cout<<endl<<endl;
    system("pause");
    }

    void pesquisa()
    {

    }

    void relatorioSaldo()
    {
    float saldo;

    system("cls");
    ifstream cp("c:\COMUM\\cp.txt");
    ifstream cr ("c:\COMUM\\cr.txt");

    if(cp.is_open())
    {
    cp>>valor_cp;
    cp>>nome_forn;
    while(cp.eof())
    {
    cout<<"FORNECEDOR: "<<nome_forn<<endl;
    }
    }
    if(cr.is_open())
    {
    cr>>valor_cr;
    cr>>nome_cl;
    while(cr.eof())
    {
    cout<<"CLIENTE: "<<nome_cl<<endl;
    }
    }

    saldo=valor_cr-valor_cp;
    cout<<"SALDO: "<<saldo<<endl;

    system("pause");
    }

    void executarOpcao()
    {
    switch(opcao)
    {
    case 0:
    {
    exit(0);
    break;
    }
    case 1:
    {
    cadastro_cp();
    //exit(0);
    break;
    }
    case 2:
    {
    cadastro_cr();
    //exit(0);
    break;
    }
    case 3:
    {
    relatorio_cp();
    //exit(0);
    break;
    }
    case 4:
    {
    relatorio_cr();
    //exit(0);
    break;
    }
    case 5:
    {
    relatorioSaldo();
    //exit(0);
    break;
    }
    case 6:
    {
    pesquisa();
    break;
    }
    case 7:
    {
    exit(0);
    break;
    }
     
    default:
    {
    menu();
    }
    }
    }

    void main()
    {
    login();
    do
    {
    menu();

    while(opcao<0 || opcao>7)
    {
    cout<<"OPCAO INVALIDA\n";
    system ("pause");
    menu();
    }
    executarOpcao();
    }
    while(opcao!=0);

    system("pause");
    }
    terça-feira, 11 de junho de 2013 16:49
  • Ninguém???
    quinta-feira, 13 de junho de 2013 12:01
  • Vou te dar um exemplo e você pode facilmente adaptar ao seu projeto:

    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    int main(int argc, char *argv[]) 
    {
      char buffer[1024];
      ifstream s;
      s.open("C:\\Users\\xxx\\Documents\\Projects C-C++\\teste.txt");
      
      if(s.is_open())
      {
        while (s.getline(buffer,sizeof(buffer)))
          cout << buffer << endl;
      }
      
      cout << endl;
      return 0;
    }

    Assembly, Delphi and C.


    • Editado Matgasp quinta-feira, 13 de junho de 2013 12:28
    • Sugerido como Resposta Matgasp sexta-feira, 14 de junho de 2013 19:56
    quinta-feira, 13 de junho de 2013 12:27