Ir ao conteúdo
  • Cadastre-se

C++ Salvar o conteudo de um .txt em outro .txt


Vinicius Antony

Posts recomendados

Olá, preciso fazer um programa de venda, estou na parte do "carrinho", no qual eu entro com o Código do produto que desejo adicionar e a quantidade. De acordo com o código inserido o programa pega as linhas refentes à esse produto no "banco" que é um .txt.

Bom, eu consegui fazer as linhas do respectivo produto serem mostradas, mas na hora de salvar essas informações em outro .txt só é salvo uma linha do que foi mostrado.

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

int main()
{
	fstream T_PRODUTO;
	fstream T_CARRINHO;
	
	int CODIGO, QUANTIDADE, LINHAINICIO, LINHAFIM, CONTADOR;
	string LINHA;

	system("CLS");
	
	fflush(stdin);
	cout << "Codigo... : ";
	cin >> CODIGO;
	cout << "Quantidade: ";
	cin >> QUANTIDADE;
	
  	//calcula quais são as linhas do produto referentes ao código digitado;
	if (CODIGO == 1)
	{
		LINHAINICIO = 1;
		LINHAFIM = 5;
	}
	else
	{
		LINHAINICIO = ((CODIGO-1)*5)+1;
		LINHAFIM = LINHAINICIO+4;
	}
	
	cout << endl;	
	
	T_PRODUTO.open("PRODUTO.txt");
	//mostra as respectivas linhas do produto
	while( ! T_PRODUTO.eof() ){
    getline(T_PRODUTO, LINHA);
    CONTADOR++;
    if(CONTADOR>LINHAINICIO&&CONTADOR<=LINHAFIM)cout<<LINHA<<endl;}

	T_CARRINHO.open("CARRINHO.txt", ios::out | ios::app);
			
	T_CARRINHO << LINHA << endl;
	T_CARRINHO << "Quantidade: "<< QUANTIDADE << endl;

	T_CARRINHO.close();
	T_PRODUTO.close();
}

O arquivo PRODUTO.txt está assim:

Codigo: 1
Nome: produto 1
Tamanho: grande
Preco: 1

Codigo: 2
Nome: produto 2
Tamanho: medio
Preco: 2

Codigo: 3
Nome: produto 3
Tamanho: pequeno
Preco: 3

O arquivo CARRINHO.txt fica assim:

Preco: 3
Quantidade: 1

Espero que entendam minha dúvida e se possível me ajudarem.

Grato desde já.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Vinicius Antony @Vinicius Antony     você está apenas lendo o arquivo e imprimindo dentro do while , e depois que sai do while depois da chave } , você  salva no outro arquivo apenas a última linha lida , então seu código com algumas modificações poderia ser assim  :

#include <iostream>
#include <fstream>
using namespace std;
int main(){
    system("color ec");
    fstream T_PRODUTO;
    fstream T_CARRINHO;
	
    int CODIGO, QUANTIDADE, LINHAINICIO, LINHAFIM, CONTADOR;
    string LINHA;

    system("CLS");
	
    fflush(stdin);
    cout << "Codigo... : ";
    cin >> CODIGO;
    cout << "Quantidade: ";
    cin >> QUANTIDADE;
	
    //calcula quais são as linhas do produto referentes ao código digitado;
    if (CODIGO == 1){
        LINHAINICIO = 1;
        LINHAFIM = 5;
    }
    else{
        LINHAINICIO = ((CODIGO-1)*5)+1;
        LINHAFIM = LINHAINICIO+4;
    }
	
    cout << endl;	
	
    T_PRODUTO.open("PRODUTO.txt");
    T_CARRINHO.open("CARRINHO.txt", ios::out | ios::app);
    //mostra as respectivas linhas do produto
    while( ! T_PRODUTO.eof() ){
        getline(T_PRODUTO, LINHA);
        CONTADOR++;

        if( CONTADOR > LINHAINICIO && CONTADOR <= LINHAFIM ){
            cout<<LINHA<<endl;
		
            T_CARRINHO << LINHA << endl;
            T_CARRINHO << "Quantidade: "<< QUANTIDADE << endl;
        }
    }
    T_CARRINHO.close();/* fecha o último arquivo primeiro como push pop */
    T__PRODUTO.close();/* fecha o primeiro arquivo por último como push pop */
}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

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...