Ir ao conteúdo

Posts recomendados

Postado

Olá galera estou precisando de uma ajuda, tenho um projeto de estoque para mero aprendizado, e cheguei em uma parte que não sei por onde começar a pesquisar, nem sei se é possível, mas sabendo que da pra fazer ou por onde começar a ver algo sobre, já ta de bom tamanho.

Já consegui fazer a pesquisa por nome abrindo o arquivo que o usuário desejar, mas gostaria de algo mas pratico, algo como uma lista. 

 

1)Quero que leia todos os arquivos txt contidos na pasta //não o nome, todo o seu conteúdo;

2)Imprima na tela todo o conteúdo de todos os arquivos;

3)Os nomes desses arquivos não podem ser colocados diretamente no código 

 

Não postei o código porque nem comecei essa parte em questão, estou perdido hehe, se caso alguém precisar eu posto, muito obrigado desde já.

Postado

Na versão C++17 do C++ tem std::filesystem::directory_iterator da biblioteca <filesystem> que você poderia usar assim:

#include <string>
#include <iostream>
#include <filesystem>

namespace fs = std::filesystem;

int main()
{
    std::string path = "/caminho/do/diretorio";
    for (const auto & p : fs::directory_iterator(path)) {
        if(p.path().extension() == ".txt"){
            std::cout << p.path() << std::endl;
        }
    }
    return 0;
}

Mas tem que ter um compilador que está atualizado para o C++17, e configurá-lo para usar essa versão (-std=c++17 no GCC).

 

No C++14 também estava disponível como experimental std::experimental::filesystem::directory_iterator .

 

 

Antes disso era necessário usar uma biblioteca de terceiros como dirent.h ou tinydir se quiser algo que funcione em vários Sistemas Operacionais (SO) diferentes, ou então usar soluções que usam os recursos específicos do SO escolhido, logo só funcionam para 1 SO (Ex: No Windows poderia usar as funções FindFirstFileA, FindNextFileA e FindClose da Win32 API).

 

Segue um tópico no Stackoverflow com várias alternativas disponíveis:

https://stackoverflow.com/questions/612097/how-can-i-get-the-list-of-files-in-a-directory-using-c-or-c

  • Curtir 3
Postado

@isrnick Olá. Me interessei por esse negócio referente a pergunta do autor do tópico e, seguindo o link q você sugeriu, deu tudo ok aqui com esse código:

#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>
#include <locale.h>

int main() {

    setlocale(LC_ALL, "Portuguese");

    DIR *dir;
    struct dirent *ent;
    if ((dir = opendir ("C:\\Users\\user\\Documents")) != NULL) {
      /* print all the files and directories within directory */
      while ((ent = readdir (dir)) != NULL) {
        printf ("%s\n", ent->d_name);
      }
      closedir (dir);
    } else {
      /* could not open directory */
      perror ("");
      return EXIT_FAILURE;
    }

    return 0;
}

Esse código imprime o nome de todos os arquivos do diretório q coloquei (fiz uma pequena alteração p não mostrar meu nome de usuário)

Só corrigindo, também imprime os sub-diretórios do diretório q passei

Obs: Só q esse código não serve como resposta para a pergunta feita pelo autor do tópico

Postado

 @isrnick, muito obrigado pela reposta, vou dar uma olhada nesses Code, interessante a questão de atualizar nunca tinha parado para ver a versão ou se está atualizado meu Code Blocks ou Compilador

 

@giu_d, independente de não servir só de ter respondido já valeu, obrigado, no caso eu usei esse mesmo Code para listar, ele está até no programa e funciona, mas tive um problema de não conseguir imprimir os arquivos entre os * que seriam as caixas de dialogo, tentei um for e tal e decidi tentar um outro jeito mais completo, e esse Code imprime também os arquivo .exe ai ficava um pouco deselegante =D

 

 

 

 

Obs: Não sei se tenho que fechar o tópico ou deixo ele aqui, qual quer coisa só me darem um toque.

 

 

 

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!