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

ofstream append


willsonny

Pergunta

Boa noite, preciso de uma ajuda, estou tentando aprender c++, o problema é o seguinte, abro um arquivo ofstrem e mando o comando ios::app, ou seja para não truncar o arquivo e escrever apartir da última linha válida, mas o arquivo é truncado. Por exemplo escolho a opção 1: digito nome fulano, telefone 123. vou no comando 1 novamente e digito: cicrano, telefone 456.
Fecho o programa e quando vou ver o arquivo de agendacplusplus.txt só tem o cicrano, ou seja ele trunca e não continua. alguém pode me ajudar?

#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;


int main(){
	ofstream agendacplusplus("agendacplusplus.txt");
	int opcao,tel;
	string nome;
	do{
	system("cls");
	cout<<"\n\n\t\também vindo ao programa agenda";
	cout<<"\nMenu";
	cout<<"\n1 - Cadastrar nome e telefone";
	cout<<"\n2 - Listar todos os nomes e telefones";
	cout<<"\n3 - Sair";
	cout<<"\nDigite uma opcao: ";
	cin>> opcao;
	switch(opcao){
		case 1:
			cout<<"\n\n\t\tOpcao de cadastro";
			cout<<"\nDigite um nome: ";
			cin.ignore();
			getline(cin,nome);
			cout<<"Digite o telefone: ";
			cin>>tel;
			agendacplusplus.open("agendacplusplus.txt",ios::in| ios::out | ios::app);// AKI SUPOSTAMENTE DEVERIA DAR O APPEND
			agendacplusplus<<nome<<"\t\t"<<tel<<endl;
			agendacplusplus.close();
			break;
		case 2:
			exit(0);
			break;
		case 3:
			exit(0);
			break;
		default:
			exit(0);
			break;
	}
	}while(opcao!=3);
 	return 0;
}

 

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

na primeira linha de main você abre ele tal como:

ofstream agendacplusplus("agendacplusplus.txt");


Se não indicar nenhum modo de abertura por default trunca.
Mais adiante você faz:

agendacplusplus.open("agendacplusplus.txt",ios::in| ios::out | ios::app);// AKI SUPOSTAMENTE DEVERIA DAR O APPEND


porem o arquivo já foi truncado.

Prove fazer isso:

#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;


int main(){
	ofstream agendacplusplus;
	int opcao,tel;
	string nome;
	do{
	system("cls");
	cout<<"\n\n\t\também vindo ao programa agenda";
	cout<<"\nMenu";
	cout<<"\n1 - Cadastrar nome e telefone";
	cout<<"\n2 - Listar todos os nomes e telefones";
	cout<<"\n3 - Sair";
	cout<<"\nDigite uma opcao: ";
	cin>> opcao;
	switch(opcao){
		case 1:
			cout<<"\n\n\t\tOpcao de cadastro";
			cout<<"\nDigite um nome: ";
			cin.ignore();
			getline(cin,nome);
			cout<<"Digite o telefone: ";
			cin>>tel;
			agendacplusplus.open("agendacplusplus.txt",ios::app);// AKI SUPOSTAMENTE DEVERIA DAR O APPEND
			agendacplusplus<<nome<<"\t\t"<<tel<<endl;
			agendacplusplus.close();
			break;
		case 2:
			exit(0);
			break;
		case 3:
			exit(0);
			break;
		default:
			exit(0);
			break;
	}
	}while(opcao!=3);
 	return 0;
}

 

Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigado  Vangodp

embora tenha colocado o código assim, já tentei de varias formas inclusive apenas com o ios::app, mexi milhoes de vezes pra tentar funcionar, exeto abrir ele dessa forma como indicou logo no começo do main.

ofstream agendacplusplus;

Agora funcionou perfeitamente, obrigado

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...