Dúvida - Remover linha num .txt em C++

faeuk

Power Member
Boa tarde

Estou a fazer um programa de gestão de um armazém de roupa, e uma das funções básicas pretendidas são as inserir e remover produtos.
Cada produto tem várias características e o utilizador, depois de escolher a opção devida no menu, deverá colocar as seguintes no input "Tipo Modelo Cor Tamanho Preço Stock" (estas na classe do artigo) e depois o programa gera um id (fora da classe) e grava-as num ficheiro .txt com o id e as características numa linha.
A função inserir e colocar no ficheiro não tem problema, só que não estou a ver como hei-de fazer para que, lendo o id, apague a linha onde está esse artigo, uma vez que se encontra fora da classe. Estou a aprender c++ e não tenho grandes conhecimentos, já procurei e não consegui nenhuma solução.

Em código tenho isto (parte)
Código:
//função de gerar o id
int gerarid(){
    int i, a = (1000+rand()%9999);
    for(i = 0; i < ID.size(); i++){
        if (ID[i] == a) a = gerarid();
    }
        ID.push_back(a);
    return a;
}
//operador da classe artigo
ostream& operator<< (ostream& out, Artigo &a ){
    out << a.getTipo() << "\t " << a.getModelo() << "\t " << a.getCor() << "\t " << a.getTamanho() << "\t\t" << a.getPreco() << "\t " << a.getStock() << endl;
}

//função de inserir e gravar novo artigo no txt
void inserirartigo(){
    string cor, modelo, tipo;
    float preco;
    int stock, tamanho;
    cout << "Especifique: Tipo Modelo Cor Tamanho Preco Stock\n";
    cin >> tipo >> modelo >> cor >> tamanho >> preco >> stock;
    Artigo a1(tipo, modelo, cor, tamanho, preco, stock);
    ofstream novoartigo ("Artigos.txt", ios::app);
    if (novoartigo.is_open()){
        novoartigo << " " << gerarid() << "\t " << a1;
        novoartigo.close();
        cout << "Artigo adicionado com sucesso\n";
}
void removerartigo(){
    int id;
    string item;
    listarartigos();
    ofstream novoartigo ("Artigos.txt", ios::app);
    cout << "\nInserir ID do item a eliminar da lista\n";
    cin >> id;
    if (id == gerarid()){
    //dúvida a fazer esta parte}
}
Se alguém me pudesse ajudar a arranjar uma solução para isto, fazendo desta maneira ou encontrando uma melhor, fica desde já o meu agradecimento.
 
porque n carregas o ficheiro para uma estrutura em memoria e fazes as eliminações que quiseres e depois voltas a guardar tudo no txt, ou outra solução é usares um txt de backup... isto é dizes o id que queres eliminar e depois vais copiando os dados para esse backup file linha a linha, e qd a linha que tiveres a copiar tiver o id igual ao que queres eliminar simplesmente n escreves nesse ficheiro. no fim de tudo fazes o rename desse ficheiro para o que tens oringinal. qualquer coisa mp
 
Back
Topo