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

Alterar arquivos txt em C++


Alexandre Barsalini

Pergunta

Boa tarde a todos.

Estou tentando manipular arquivos em C++, utilizo o Visual Studio e o arquivo encontra-se dentro da pasta Source Files, preciso alterar o conteúdo dentro do arquivo, por ex.:

Teste.txt (nome do arquivo)

Dentro do arquivo contem 10 linhas com diversas palavras.

Quando o usuario desejar alterar alguma linha, o programa deverá encontrar a posição da mesma e alterar seu conteúdo, porém não estou conseguindo fazer isso, alguém tem alguma dica?

Segue abaixo o código.

#include<iostream>
#include<fstream>
#include<string>
#include <ctime>
using namespace std;
struct Significados{
    string traducao[5];
};
struct inserir{
    string palavra;
    Significados traducoes;
};
void swap(int pos)
{
    ofstream openfile;
    string a,b,c,d,e,f,g;
    int pos_aux=0;
    openfile.open("teste.txt",ios::in|ios::erase_event);
    ifstream get("dic.txt",ios::in);
    while (!get.eof())
    {
    pos_aux++;
    if (pos_aux != pos)
    {
    get>>a>>b>>c>>d>>e>>f>>g; 
    openfile << a << " " << b << " "<< c  << " "<< d << " "<< e  << " "<< f  << " "<< g << "$%\n";    
    }
    }
}
string conversao_min_max(string palavra)
{
    char teste;
    for (int i=0; i < palavra.length(); i++)
    {
        if ((palavra[i]>='a')&&(palavra[i]<='z'))
        {
        teste = palavra[i];
        teste = teste-('a'-'A');
        palavra[i]= teste;
        }
    }
        return palavra;
}
void busca_significado(string p) 
{ 
    bool teste=true;
    string a,b,c,d,e,f,g;
    ifstream get("dic.txt",ios::in);
    while ((!get.eof())&&(teste!=false))//enquanto não for fim do arquivo
    {
    get>>a>>b>>c>>d>>e>>f>>g; 
    if (c == "$%")
    {
            if (p == a )
            {
                cout<<"O termo pesquisado encontra se em ingles e em portugues significa: "<<b << " . " << endl;
                teste=false;
                break;//para não ocorrer repetição do significado.
            }
            else if(p == b )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
    }
    else if(d == "$%" )
    {
        if (p == a )
            {
                cout<<"O termo pesquisado encontra se em ingles e em portugues significa: "<<b  << " e " << c << " . " << endl;
                teste=false;
                break;//para não ocorrer repetição do significado.
            }
            else if(p == b )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
            else if(p == c )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }

    }
    else if(e == "$%" )
    {
                if (p == a )
            {
                cout<<"O termo pesquisado encontra se em ingles e em portugues significa: "<<b << ", " << c << " e " << d << " . " << endl;
                teste=false;
                break;//para não ocorrer repetição do significado.
            }
            else if(p == b )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
            else if(p == c )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
            else if(p == d )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
    }
    else if(f == "$%" )
    {
            if (p == a )
            {
                cout<<"O termo pesquisado encontra se em ingles e em portugues significa: "<<b << ", " << c << ", " << d << " e " << e << " . " << endl;
                teste=false;
                break;//para não ocorrer repetição do significado.
            }
            else if(p == b )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
            else if(p == c )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
            else if(p == d )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
            else if(p == e )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
    }
    else if(g == "$%" )
    {
            if (p == a )
            {
                cout<<"O termo pesquisado encontra se em ingles e em portugues significa: "<<b << ", " << c << ", " << d << ", " << e <<  " e " << f << " . " << endl;
                teste=false;
                break;//para não ocorrer repetição do significado.
            }
            else if(p == b )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
            else if(p == c )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
            else if(p == d )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
            else if(p == e )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
            else if(p == f )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
    }
}
if (teste == true )
cout << "não encontrado! | Not found! " << endl;
}
int verifica_existencia(string p )
{
    bool teste = true;
    string a,b,c,d,e,f,g;
    int pos=0;
    ifstream get("dic.txt",ios::in);
    while ((!get.eof())&&(teste!=false))//enquanto não for fim do arquivo
    {
        pos++;
    get>>a>>b>>c>>d>>e>>f>>g; 
    if (c == "$%" )
    {
            if (p == a )
            {
                cout<<"O termo pesquisado encontra se em ingles e em portugues significa: "<<b << " . " << endl;
                teste=false;
                break;//para não ocorrer repetição do significado.
            }
            else if(p == b )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
    }
    else if(d == "$%" )
    {
        if (p == a )
            {
                cout<<"O termo pesquisado encontra se em ingles e em portugues significa: "<<b  << " e " << c << " . " << endl;
                teste=false;
                break;//para não ocorrer repetição do significado.
            }
            else if(p == b )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
            else if(p == c )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }

    }
    else if(e == "$%" )
    {
                if (p == a )
            {
                cout<<"O termo pesquisado encontra se em ingles e em portugues significa: "<<b << ", " << c << " e " << d << " . " << endl;
                teste=false;
                break;//para não ocorrer repetição do significado.
            }
            else if(p == b )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
            else if(p == c )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
            else if(p == d )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste=false;
                break;
            }
    }
    else if(f == "$%" )
    {
            if (p == a )
            {
                cout<<"O termo pesquisado encontra se em ingles e em portugues significa: "<<b << ", " << c << ", " << d << " e " << e << " . " << endl;
                teste = false;
                break;//para não ocorrer repetição do significado.
            }
            else if(p == b )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste = false;
                break;
            }
            else if(p == c )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste = false;
                break;
            }
            else if(p == d )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste = false;
                break;
            }
            else if(p == e )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste = false;
                break;
            }
    }
    else if(g == "$%" )
    {
            if (p == a )
            {
                cout<<"O termo pesquisado encontra se em ingles e em portugues significa: "<<b << ", " << c << ", " << d << ", " << e <<  " e " << f << " . " << endl;
                teste = false;
                break;//para não ocorrer repetição do significado.
            }
            else if(p == b )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste = false;
                break;
            }
            else if(p == c )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste = false;
                break;
            }
            else if(p == d )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste = false;
                break;
            }
            else if(p == e )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste = false;
                break;
            }
            else if(p == f )
            {
                cout << "The searched term is in Portuguese and in English meaning: " << a << ". " << endl;
                teste = false;
                break;
            }
    }
}
return pos;
}
void menu()
{
system("color 37");
cout<<".:. Dicionario PT EN | EN PT Dictionary .:."<<endl<< endl;
cout<<"1.Inserir nova palavra | Insert new word."<<endl;
cout<<"2.Mostrar traducao | Show meaning."<<endl;
cout<<"3.Creditos | Credits."<<endl;
cout<<"0.Sair | Exit."<< endl << endl;

}
void insercao()
{
    inserir dicionario; 
    string aux;
    bool teste = false;
    int pos=0;//posicao de que linha encontra-se a palavra
    char moresignificados;
    int controle=0;
    ofstream openfile;

    openfile.open("dic.txt",ios::app);
    cout << "Insira uma nova palavra em ingles | Enter a new word in English: ";
    cin >> dicionario.palavra;
    aux = conversao_min_max(dicionario.palavra);
    dicionario.palavra= aux;
    pos =verifica_existencia(dicionario.palavra);
    if (pos > sizeof("dic.txt"))
    {
        cout << "Insira seu significado em portugues | Enter the meaning in Portuguese: ";
        cin>> dicionario.traducoes.traducao[0];
        aux = conversao_min_max(dicionario.traducoes.traducao[0]);
        dicionario.traducoes.traducao[0]= aux;
        for (int i=1; i<5; i++)
        {
            cout << "Conhece outro significado? ";
            cout << "Pressione Y ou S para informar mais um significado. ";
            cin >> moresignificados;
            if ((moresignificados == 'y')||(moresignificados =='Y')||((moresignificados =='s'))||(moresignificados =='S'))
            {
                cout << "Insira seu significado em portugues | Enter the meaning in Portuguese: ";
                cin>>dicionario.traducoes.traducao[i];
                aux = conversao_min_max(dicionario.traducoes.traducao[i]);
                dicionario.traducoes.traducao[i] = aux;
            }
            else
            {
                controle = i;
                break;
            }
            controle=i;
        }
        openfile << endl << dicionario.palavra;//grava a palavra no arquivo
        for (int i=0; i<=controle; i++)
        {
            openfile << " "  << dicionario.traducoes.traducao[i];
        }
        for (int i=controle; i<=5; i++)
        {
        openfile << " $%";
        }
        openfile.close();
    }
    else
    {
        cout << "Deseja alterar? Para sim, pressione S ou Y. " << endl;
        cin >> moresignificados;
        if ((moresignificados == 'y')||(moresignificados =='Y')||((moresignificados =='s'))||(moresignificados =='S'))
        {
        swap(pos);
        cout << "under construction... " << endl;
        system("pause");
        }
    }
}
void dicionario()
{
int ch;
string aux;
bool test = true;

do
{
menu();
cout << "Opcao escolhida | Option chosen: ";
cin >> ch;
if (ch == 1)
{
    insercao();
}
else if(ch == 2)
{
    string word;
    cout<<"Informe a palavra a ser traduzida | Enter the word to be translated: ";
    cin>>word; 
    aux = conversao_min_max(word);
    word = aux;
    busca_significado(word);
    system("pause 2s");
}
else if (ch == 3)
{
        cout<< "Trabalho de PI. | Work to Interdiciplinar Project. " << endl;
        system("pause 2s");
}
else if (ch == 0 )
{
    
    cout << endl << "Saindo, aguarde. | Leaving, wait. " << endl<< endl;
    break;
    test = false;
}
else
{
    cout << "Opcao invalida! Por favor, repita o processo. "  << endl << "Invalid choice! Please repeat the process." << endl << endl;
    system("pause 2s");
}
    system("cls");
}while(test !=false);
}
void main()
{
    dicionario();
}

Valeu!

Editado por Durub
Adicionar tags code [Durub]
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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