Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
MatheusTITributos

C++ Ler os 4 primeiros numeros de um arquivo

Recommended Posts

Galera boa tarde,

 

Estou com um arquivo onde preciso lêr linha por linha, só que por exemplo sempre que o arquivo começar com 2000, 2100, 2010, 2120, 2121,2122,2130, 2200, 2999 eu crie um arquivo para cada um e armazene tudo que for referente a eles no arquivo. Meu programa ele está lendo, criando os arquivos só que  não consegue armazenar nos arquivos .txt no caso o arquivo sempre terá que ler os 4 primeiros caracteres. e se for igual aos números citados ele vai armazenar nos arquivos.

Meu código:

#include <iostream>
#include <fstream>
#include <locale>
using namespace std;

int main() {

    setlocale(LC_ALL, "Portuguese");

    ifstream arquivo1;
    ofstream arquivox3;
    ofstream arquivox4;
    ofstream arquivox5;
    ofstream arquivox6;
    ofstream arquivox7;
    ofstream arquivox8;
    ofstream arquivox9;
    ofstream arquivoxx;
    ofstream arquivoxx1;
    
    string linha;
    string ins;    
    arquivo1.open("DEFIS2013.txt"); // abre arquivo p leitura
    arquivox2.open("arquivo2000.txt"); // abre arquivo p escrita
    arquivox3.open("arquivo2100.txt"); // abre arquivo p escrita
    arquivox4.open("arquivox2110.txt"); // abre arquivo p escrita
    arquivox5.open("arquivox2120.txt"); // abre arquivo p escrita
    arquivox6.open("arquivox2121.txt"); // abre arquivo p escrita
    arquivox7.open("arquivox2122.txt"); // abre arquivo p escrita
    arquivox8.open("arquivox2130.txt"); // abre arquivo p escrita
    arquivox9.open("arquivox2200.txt"); // abre arquivo p escrita
    arquivoxx.open("arquivox2999.txt"); // abre arquivo p escrita


            
    
        
    if (arquivo1.is_open() && arquivox2.is_open() && arquivox3.is_open()  && arquivox4.is_open() && arquivox5.is_open() && arquivox6.is_open() && arquivox7.is_open()  && arquivox8.is_open() && arquivox9.is_open() && arquivoxx.is_open())  
    {
        while (getline(arquivo1,linha))
        {
            cout<< linha;
            
        if (linha.at(0) && linha.at(1) && linha.at(2) && linha.at(3) == '2000')
        {    
        /*    ins = linha.at(1);
            ins = ins + linha.at(2);
            ins = ins + linha.at(3);
            ins = ins + linha.at(4);
            ins = ins + linha.at(5);
            ins = ins + linha.at(6);
            ins = ins + linha.at(7);
            ins = ins + linha.at(8);
        */

            arquivox2 << linha <<endl; //arquivox3 recebe linha e pula linha
            
        }
        
        if (linha.at(0) && linha.at(1) && linha.at(2) && linha.at(3) == '2100')
        {
            
            arquivox4 << linha  <<endl;
            
        }
        
        if (linha.at(0) && linha.at(1) && linha.at(2) && linha.at(3) == '2110')
        {
            
            arquivox5 << linha  <<endl;
            
        }
        
        if (linha.at(0) && linha.at(1) && linha.at(2) && linha.at(3) == '2120')
        {
            arquivox5<< linha  <<endl;
        }
            
        }
        if (linha.at(0) && linha.at(1) && linha.at(2) && linha.at(3) == '2121')
        {
            
            arquivox6 << linha  <<endl;
            
        }
        
        if linha.at(0) && linha.at(1) && linha.at(2) && linha.at(3) == '2122')
        {
            arquivox7<< linha  <<endl;
        }
        if linha.at(0) && linha.at(1) && linha.at(2) && linha.at(3) == '2130')
        {
            arquivox8<< linha  <<endl;
        }
        
        if (linha.at(0) && linha.at(1) && linha.at(2) && linha.at(3) == '2200')
        {
            arquivo9<< linha  <<endl;
        }
        
            if (linha.at(0) && linha.at(1) && linha.at(2) && linha.at(3) == '2999')
        {
            arquivoxx<< linha  <<endl;
        }
        
        }
    
    
    

return 0;    
}

 

 

Código .txt exemplo que ele quer que eu leia

AAAA|100|29/06/2018 16:05:55|2013|DEFIS/DEFIS-C/PGDAS-D||Somente as atividades e distribuições do IPM|||Todas (Normais e Retifics.) |Definitivo Válido - 18/12/2014 15:47:41||NOVA IGUACU||||
2000|2013|45435032013001|2071408706699649|1|N|S|04543503|MULTHOTEL DISTRIBUIDORA DO MOBILIARIO LTDA - EPP|4543503000164|28/03/2014 15:00:50|17/04/2014 06:24:44|15648435|N|20/05/2014 16:54:34
2100|4543503000164|77217452
2110|1|S|3432217,29
2120|RJ|5869|NOVA IGUACU|01/01/2013
2121|16|S|N|920018,46
2130|S|5869|NOVA IGUACU|2018327,99
2999|7
2000|2013|10333062013001|2071408608630016|1|N|S|01033306|HELP STAR BLUE COMERCIO DE MATERIAIS MEDICOS E HOSPITALARES LTDA|1033306000107|27/03/2014 17:27:41|17/04/2014 05:04:49|||
2100|1033306000107|85833162
2110|1|S|3115344,72
2110|2|S|1509537,38
2120|RJ|5869|NOVA IGUACU|01/01/2013
2130|S|5869|NOVA IGUACU|1479962,27
2200|1033306201301001|01259032483362706689|15/02/2013 10:58:24|14/08/2013 19:16:39|2013|1
2200|1033306201302002|01358031583327706810|13/03/2013 16:44:36|15/08/2013 13:19:56|2013|2
2200|1033306201303001|01044039873346306170|19/04/2013 10:27:07|18/08/2013 19:47:46|2013|3
2200|1033306201304001|01355035133389006031|20/05/2013 13:05:45|19/08/2013 16:37:51|2013|4
2200|1033306201305002|01138030913346606182|16/07/2013 17:36:49|02/08/2014 02:11:37|2013|5
2200|1033306201306001|01072031853300506798|16/07/2013 17:47:02|02/08/2014 02:11:37|2013|6
2200|1033306201307001|01270036473362506675|19/08/2013 14:58:46|22/08/2013 06:52:07|2013|7
2200|1033306201308001|01081032773333206559|18/09/2013 16:06:39|08/10/2013 06:02:58|2013|8
2200|1033306201309001|01086034373391006400|16/10/2013 12:05:41|23/10/2013 06:01:06|2013|9
2200|1033306201310001|01076030693323006440|01/11/2013 18:18:57|09/01/2014 01:27:31|2013|10
2200|1033306201311001|01201033553354706518|13/12/2013 17:09:14|10/01/2014 03:36:00|2013|11
2200|1033306201312001|01200035273343306550|17/01/2014 16:15:53|13/02/2014 13:18:23|2013|12
2999|19
2000|2013|60194892013001|2071408708140053|1|N|S|06019489|CLEAR OPTICAL LENS IMPORTACAO E EXPORTACAO LTDA - EPP|6019489000120|28/03/2014 15:59:25|17/04/2014 06:24:44|15655339|N|21/05/2014 15:01:34
2100|6019489000120|77657673
2110|4|S|3172739,25
2120|RJ|5869|NOVA IGUACU|01/01/2013
2121|16|S|N|331691
2130|S|5869|NOVA IGUACU|1346967,56
2999|7
2000|2013|57993712013001|2071408200034131|1|N|S|05799371|FORMAGGI ITALIANI BAR E RESTAURANTE LTDA|5799371000107|23/03/2014 09:46:27|17/04/2014 01:49:30|||
2100|5799371000107|77586920
2110|1|S|3097632,61
2110|2|S|836627,56
2120|RJ|5869|NOVA IGUACU|01/01/2013
2130|S|5869|NOVA IGUACU|1258963,25
2200|5799371201301001|05197793649307671007|14/02/2013 10:27:12|14/08/2013 17:33:58|2013|1
2200|5799371201302001|05311799529331971055|13/03/2013 11:46:56|15/08/2013 13:19:56|2013|2
2200|5799371201303001|05208798919384171179|11/04/2013 11:36:12|18/08/2013 09:39:08|2013|3
2200|5799371201304001|05351798799310571169|14/05/2013 13:49:36|19/08/2013 08:52:18|2013|4
2200|5799371201305001|05229794049380171467|12/06/2013 07:59:18|20/08/2013 00:22:28|2013|5
2200|5799371201306001|05185796579375271609|15/07/2013 10:33:39|20/08/2013 19:37:50|2013|6
2200|5799371201307001|05353790529354071160|13/08/2013 07:49:48|22/08/2013 00:09:35|2013|7
2200|5799371201308001|05110799309367271901|16/09/2013 09:18:31|08/10/2013 03:33:36|2013|8
2200|5799371201309001|05311795819334171033|15/10/2013 12:18:09|23/10/2013 04:23:21|2013|9
2200|5799371201310001|05176796409383571172|13/11/2013 08:11:38|09/01/2014 08:30:23|2013|10
2200|5799371201311001|05067798699336771723|13/12/2013 09:57:49|10/01/2014 03:36:00|2013|11
2200|5799371201312001|05178797779300971357|14/01/2014 12:52:01|13/02/2014 06:58:22|2013|12
2999|19
2000|2013|143394672013001|2071409003110828|1|N|N|14339467|MAYBE DO BRASIL COSMETICOS LTDA - ME|14339467000175|31/03/2014 10:28:28|17/04/2014 08:41:38|||
2100|14339467000175|79491853
2110|2|S|789919,18

 

Editado por Simon Viegas
Inserir tag CODE

Compartilhar este post


Link para o post
Compartilhar em outros sites

@MatheusTITributos Olá. De maneira bem básica seu código poderia ficar assim:

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

int main() {

    setlocale(LC_ALL, "Portuguese");

    ifstream arquivo1;
    ofstream arquivox2, arquivox3, arquivox4, arquivox5, arquivox6, arquivox7, arquivox8, arquivox9, arquivox10;

    string linha;

    arquivo1.open("arquivoDadosC++.txt"); // abre arquivo p leitura
    arquivox2.open("arquivox2000.txt"); // abre arquivo p escrita
    arquivox3.open("arquivox2100.txt"); // abre arquivo p escrita
    arquivox4.open("arquivox2110.txt"); // abre arquivo p escrita
    arquivox5.open("arquivox2120.txt"); // abre arquivo p escrita
    arquivox6.open("arquivox2121.txt"); // abre arquivo p escrita
    arquivox7.open("arquivox2122.txt"); // abre arquivo p escrita
    arquivox8.open("arquivox2130.txt"); // abre arquivo p escrita
    arquivox9.open("arquivox2200.txt"); // abre arquivo p escrita
    arquivox10.open("arquivox2999.txt"); // abre arquivo p escrita

    if (arquivo1.is_open() && arquivox2.is_open() && arquivox3.is_open()
        && arquivox4.is_open() && arquivox5.is_open() && arquivox6.is_open()
        && arquivox7.is_open()  && arquivox8.is_open() &&
        arquivox9.is_open() && arquivox10.is_open()) {

        while (getline(arquivo1,linha)) {

            cout << linha << endl;

            if (linha.substr(0, 4) == "2000") {
                arquivox2 << linha << endl; //arquivox3 recebe linha e pula linha
            }
            if (linha.substr(0, 4) == "2100") {
                arquivox3 << linha  << endl;
            }
            if (linha.substr(0, 4) == "2110") {
                arquivox4 << linha  << endl;
            }
            if (linha.substr(0, 4) == "2120") {
                arquivox5 << linha  << endl;
            }
            if (linha.substr(0, 4) == "2121") {
                arquivox6 << linha  << endl;
            }
            if (linha.substr(0, 4) == "2122") {
                arquivox7 << linha  << endl;
            }
            if (linha.substr(0, 4) == "2130") {
                arquivox8 << linha  << endl;
            }
            if (linha.substr(0, 4) == "2200") {
                arquivox9 << linha  << endl;
            }
            if (linha.substr(0, 4) == "2999") {
                arquivox10 << linha  << endl;
            }
        }

    } else {
        cout << "Não foi possível abrir um ou mais arquivos!\n" << endl;
        exit(1);
    }

    arquivo1.close();
    arquivox2.close();
    arquivox3.close();
    arquivox4.close();
    arquivox5.close();
    arquivox6.close();
    arquivox7.close();
    arquivox8.close();
    arquivox9.close();
    arquivox10.close();

    return 0;
}

Devo confessar q está longe de ser um código bem elaborado, mas está funcionando assim 

Editado por giu_d
Correção no código
  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×